2010-12-11 22 views
1

Ich versuche, den Benutzer zweimal um Bestätigung zu bitten, bevor ich etwas irreversible an der Datenbank mache. Das Problem besteht darin, dass der äußere Click-Handler nicht auf den inneren Click-Handler wartet. Nachdem Sie im ersten Dialog auf Ja geklickt haben, wird der zweite Dialog kurz angezeigt, aber der äußere Handler wird trotzdem ausgeführt und beendet, was letztendlich beide Dialoge zerstört.Android verschachtelter AlertDialog - ist das möglich?

new AlertDialog.Builder(ActivityMain.this).setMessage(
    "Are you sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 

    new AlertDialog.Builder(ActivityMain.this).setMessage(
     "Are you really sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 

    .... 

Warum ist das?

Antwort

2

nur Design ein neues XML-Layout als Dialog und eine neue Aktivität erstellen und es Thema ist zu @android: Stil/Theme.Dialog in der Manifest-Datei unter dem Aktivitäts-Tag ab:

<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity> 

in der Dialog click listener code starten Sie die Aktivität als

new AlertDialog.Builder(ActivityMain.this).setMessage(
    "Are you sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
      Intent i = new Intent(YourActivity.this, NewActivity.class); 
      startActivity(i); 
     } 

Dies wird Ihre neue Aktivität als ein Dialogfeld starten, wo Sie Ihre Aktion leicht anwenden können.

+0

Ich habe es noch nicht versucht, aber ich mag es. – cdonner

2

Ich glaube, es ist, weil Dialoge nicht blockieren. Sobald sie angezeigt werden, geht die Verarbeitung weiter zur nächsten Codezeile. Der Dialog wird jedoch weiterhin angezeigt und wartet auf Benutzerinteraktion.

Verwandte Themen