AlertDialog ist das ein Fehler?

Meine App erstellt einen AlertDialog, in dem ein Benutzer den zu speichernden Namen eingibt. Wenn ein Benutzer auf die Schaltfläche Speichern klickt, sucht der onClickListener nach doppeltem Namen. Wenn der Name bereits vorhanden ist, wird ein weiteres Dialogfeld angezeigt, in dem der Benutzer darauf hingewiesen wird, dass vorhandene Daten ersetzt werden. Der Benutzer hat dann die Wahl, abzubrechen und zu einem neuen Namen zurückzukehren oder fortzufahren und die Daten ersetzen zu lassen.
Wenn das zweite Dialogfeld angezeigt wird, ist das erste Dialogfeld voraussichtlich noch sichtbar, bis ich "dismiss" anrufe. Der erste AlertDialog ist jedoch verschwunden, bevor der zweite AlertDialog angezeigt wird. Das heißt, wird automatisch abgewiesen, wenn eine Schaltfläche angeklickt wird. Ist das ein Fehler oder beabsichtigt?
Ich habe den folgenden Testfall geschrieben, den ich auf 3 Geräten überprüft habe: Nexus S android 4.0, HTC Rezound android 2.3 und Motorola Droid Bionic android 2.3.

Layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

    <TextView 
        android:id="@+id/message"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Some message will be here"
    />

    <Button
        android:id="@+id/show_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Show"
    />

</LinearLayout>

Code

public class AlertDialogBug extends Activity 
{
    static final int DIALOG_ALERT_ID = 1;
    AlertDialog alertDlg;  
    TextView message;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        message = (TextView) findViewById(R.id.message);
        Button showButton = (Button) findViewById(R.id.show_btn);
        showButton.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                showDialog(DIALOG_ALERT_ID);
            }   
         });
     }

    private AlertDialog createAlertDialog()
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Bug?");

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
        {

            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                // No dismiss, cancel, finish, or removeDialog,
                // but the dialog will disappear when this button is clicked.
            }

          });

         alertDlg = builder.create();
         alertDlg.setOnDismissListener(new OnDismissListener()
         {

             @Override
             public void onDismiss(DialogInterface dialog)
             {
                message.setText("onDismiss was called");
             }

          });

          return alertDlg;
    }

    @Override
    protected Dialog onCreateDialog(int id)
    {
        switch (id)
        {
            case DIALOG_ALERT_ID:
                return createAlertDialog();

            default:
                return super.onCreateDialog(id);
        }       
    } 

} 

Ich habe das Dialogfeld zum Speichern ursprünglich als eine Aktivität mit Android geschrieben: theme = "@ android: style / Theme.Dialog". Die Benutzeroberfläche sieht auf dem Nexus S und Rezound gut aus, aber auf dem Droid Bionic sieht sie furchtbar aus (das Bearbeitungsfeld und die Schaltfläche haben nur die Hälfte der Breite, die andere Hälfte ist leer).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage