2014-09-28 7 views
24

Kann ich meinen AlertDialog nicht einfach schließen, nachdem ich auf PositiveButton geklickt habe?Android AlertDialog nach dem Klicken auf PositiveButton nicht löschen

Ich möchte der Dialog bleiben, um etwas update auf meinem ArrayAdapter listWords anzuzeigen.

Dies ist mein Code. Vielen Dank für Hilfe :)

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

Haben Sie versucht, 'setCancelable (false)'? –

+0

Ich setze sayWindows.setCancelable (false) unter setTitle, aber es funktioniert nicht. –

+0

Und es funktioniert auch nicht in PositiveButton onClick. –

Antwort

41

Nachdem ich @Little Child Lösung angeschaut habe, versuche ich dies zu machen. Lassen Sie uns wissen, ob dies für Sie funktioniert.

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

Danke Aber die positive Taste scheint keine Funktion. Ich habe Toast hineingetan, aber es hat nicht funktioniert. –

+1

Huff, endlich hat es getan, jetzt funktioniert es, schau es dir an. Mit Änderungen der Zuweisung von AlertDialog mit create, setOnShowListener firt und danach show(). Es funktioniert jetzt, hoffentlich funktioniert es auch für Sie. Wenn es so ist, bitte ich Sie, es als Antwort zu markieren, damit es andere in Zukunft leicht finden können. Vielen Dank. – Chitrang

+0

Vielen Dank. Es funktioniert gut für mich. –

8

auf der Grundlage der meisten Stimmen Antwort für 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 

       } 
      }); 
     } 
    }); 

Ich glaube, Sie brauchen die positive Schaltfläche Handler außer Kraft zu setzen. Fügen Sie Ihre Logik hinzu, um den Dialog zu schließen, wenn eine bestimmte Bedingung erfüllt ist.

+0

Ich kannAdapter (listWords, null) nicht festlegen, nachdem ich "AlertDialog.Builder d" in "AlertDialog d" geändert habe. Kannst du mir sagen warum? –

+0

Danke. Für mich gearbeitet :) –

2

Auch Einfachere:

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

das ist die beste Antwort – pellyadolfo

Verwandte Themen