Come posso chiudere un diario di avviso Android

Sto sviluppando un quiz e ho bisogno che l'utente risponda a tutte le domande prima di procedere. Quando l'utente non ha risposto a tutte le domande visualizzando un semplice diario di avviso che lo informa. Il problema è quello che faccio non riesco a chiudere il dialogo di avviso. Perché non è dialog.cancel funzionare? `Questo è il codice:

AlertDialog.Builder ad = new AlertDialog.Builder(this); ad.setTitle("Unanswered Questions"); ad.setMessage("You have not answered all the questions."); ad.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); ad.show(); 

  • Tentativo di ricall il metodo virtuale 'void android.widget.Button.setOnClickListener (android.view.View $ OnClickListener)' su un riferimento di null object
  • incapace di sostituire / navigare frammenti
  • Testo / scheda di progettazione Manca un nuovo progetto Android su Android Studio IDE
  • Come posso identificare la stessa etichetta xml per la seconda volta?
  • Emulatore Android chiudere utilizzando telnet tramite script di appium
  • android: limite di 10 caratteri per row TextView
  • 14 Solutions collect form web for “Come posso chiudere un diario di avviso Android”

    L' AlertDialog.Builder sé non contiene un metodo dismiss() o cancel() .

    È una class di convenienza per aiutarti a creare una window di dialogo che abbia accesso a tali methods.

    Ecco un esempio:

     AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog alert = builder.create(); alert.show(); 

    è ansible quindi call il metodo alert.cancel() sull'avviso (non il constructor)

    provare ad usare

    dialog.dismiss()

    invece di usare

    dialog.cancel()

    mettere questa row in OnCreate ()

     Context mcontext=this; 

    e usano questa variabile nel seguente codice

     final AlertDialog.Builder alert = new AlertDialog.Builder( mcontext); alert.setTitle(title); alert.setMessage(description); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alert.show(); 

    Provare questo codice .. Esegue correttamente ..

    Utilizza il button setNegative, non è richiesto alcun button Positivo! Ti prometto che vincerai x

     AlertDialog.Builder ad = new AlertDialog.Builder(this); ad.setTitle("Unanswered Questions"); ad.setMessage("You have not answered all the questions."); ad.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); ad.show(); 

    Rispondere a un vecchio post ma speriamo che qualcuno potrebbe trovare questo utile. Fai invece questo

     final AlertDialog builder = new AlertDialog.Builder(getActivity()).create(); 

    Potete poi andare avanti e fare,

     builder.dismiss(); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog alert = builder.create(); alert.show(); 

    Il codice di cui sopra funziona, ma assicuratevi di fare alert una variabile globale in modo da poterli arrivare dall'interno del metodo onClick.

    Vorrei provare a mettere un

     Log.e("SOMETAG", "dialog button was clicked"); 

    prima della linea dialog.dismiss () nel codice per vedere se effettivamente raggiunge quella sezione.

    Usare il dialogo invece di AlertDialog

    AlertDialog non dispone di dismiss() ma AlertDialog possiede alcuni methods per il button come setPositiveButton() .

    Raccommand di utilizzare il dialogo se si desidera una window di dialogo personalizzata.

     final AlertDialog.Builder alert = new AlertDialog.Builder(mcontext); alert.setTitle(title); alert.setMessage(description); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { cancelDialog(); //Implement method for canceling dialog } }); alert.show(); void cancelDialog() { //Now you can either use dialog.cancel(); //or dialog.dismiss(); } 

    è ansible riavviare l'attività in cui si visualizza il tuo diario di avviso o un'altra attività dipende dal tuo giudizio. se si desidera riavviare l'attività utilizzare questa finitura (); startActivity (getIntent ());

     alertDialog.setPositiveButton("SAVE", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { /*Write your code here */ dialog.dismiss(); } }); alertDialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); 

    Ho provato la soluzione di PowerAktar, ma l'AlertDialog e il constructor hanno sempre tenuto parti separate. Quindi, come get il "vero" AlertDialog?

    Ho trovato le mie soluzioni nello show-Dialog: scrivete

     ad.show(); 

    per visualizzare la window di dialogo. Con l'aiuto dello show dice "Crea un AlertDialog con gli argomenti forniti a questo constructor e Dialog.show () è la window di dialogo". Quindi la window di dialogo è finalmente creata qui. Il risultato dello show () – Comando è l'AlertDialog stesso. Quindi puoi utilizzare questo risultato:

     AlertDialog adTrueDialog; adTrueDialog = ad.show(); 

    Con questo adTrueDialog è ansible annullare () …

     adTrueDialog.cancel() 

    o per eseguire un command di pulsanti all'interno della window di dialogo:

     Button buttonPositive = adTrueDialog.getButton(Dialog.BUTTON_POSITIVE); buttonPositive.performClick(); 

    Se già utilizzi il button positivo e negativo (come faccio nel mio progetto) puoi usare il button neutro per chiudere la window di dialogo.

    Ho anche notato che in versione Android> 5 la window di dialogo è chiusa cliccando fuori dalla window di dialogo, ma in versione precedente non succede.

     ad.setNeutralButton("CLOSE", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // close dialog } }); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.