2014-09-28 13 views
24

Posso semplicemente ignorare la mia AlertDialog dopo aver fatto clic su PositiveButton?Android Non ignorare AlertDialog dopo aver fatto clic su PositiveButton

Mi piacerebbe rimanere la finestra di dialogo per mostrare qualcosa di aggiornamento sul mio elenco ArrayAdapter.

Questo è il mio codice. Grazie per l'aiuto :)

AlertDialog.Builder sayWindows = new AlertDialog.Builder(MapActivity.this); 

    final EditText saySomething = new EditText(MapActivity.this); 

    sayWindows.setPositiveButton("ok", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say);      
       } 
      }); 

    sayWindows.setNegativeButton("cancel", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 
    sayWindows.create().show(); 
+0

Hai provato 'setCancelable (false)'? –

+0

Metto sayWindows.setCancelable (false) sotto setTitle, ma non funziona. –

+0

E non funziona anche su PositiveButton onClick. –

risposta

41

Dopo aver esaminato la soluzione @Little Child, provo a farlo. Facci sapere se questo funziona per te.

AlertDialog.Builder sayWindows = new AlertDialog.Builder(
      MapActivity.this); 
    final EditText saySomething = new EditText(MapActivity.this); 
    sayWindows.setPositiveButton("ok", null); 
    sayWindows.setNegativeButton("cancel", null); 
    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 

    final AlertDialog mAlertDialog = sayWindows.create(); 
    mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say); 
       } 
      }); 
     } 
    }); 
    mAlertDialog.show(); 
+1

Grazie, ma il pulsante positivo sembra non funzionare. Ho messo i toast lì ma non ha funzionato. –

+1

Huff, finalmente lo ha fatto, ora funziona, controlla. Con le modifiche di assegnazione di AlertDialog con create, quindi setOnShowListener firt e dopo tale chiamata show(). Ora funziona, speriamo che funzioni anche per te. Se lo fa, ti chiedo di contrassegnarlo come risposta, in modo che in futuro gli altri possano trovarlo facilmente. Grazie. – Chitrang

+0

Grazie mille. Funziona bene per me. –

8

in base alla risposta più votato per How to prevent a dialog from closing when a button is clicked

final AlertDialog d = new AlertDialog.Builder(context) 
      .setView(v) 
      .setTitle(R.string.my_title) 
      .setPositiveButton(android.R.string.ok, null) //Set to null. We override the onclick 
      .setNegativeButton(android.R.string.cancel, null) 
      .create(); 

    d.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = d.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 

       } 
      }); 
     } 
    }); 

Credo che hai bisogno di ignorare gestore del pulsante positiva. Aggiungi la logica per chiudere la finestra di dialogo quando viene soddisfatta una determinata condizione.

+0

Non riesco a impostare Adattatore (elenco parole, null) dopo aver modificato "AlertDialog.Builder d" in "AlertDialog d". Puoi dirmi perché? –

+0

Grazie. Ha funzionato per me :) –

2

ancora più semplice:

final AlertDialog alertDialog = new AlertDialog.Builder(context).setView(v) 
       .setPositiveButton(android.R.string.ok, null) 
       .setNegativeButton(android.R.string.cancel, null) 
       .show(); 

     Button b = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       //Do Your thing 
      } 
     }); 
+0

questa è la migliore risposta – pellyadolfo

Problemi correlati