AlertDialog to błąd?

Moja aplikacja tworzy AlertDialog, w którym użytkownik wprowadza nazwę, aby zapisać. Gdy użytkownik kliknie przycisk Zapisz, onClickListener sprawdzi, czy nie ma duplikatu nazwy. Jeśli nazwa już istnieje, pojawi się kolejne okno dialogowe, aby powiadomić użytkownika, że ​​istniejące dane zostaną zastąpione. Użytkownik ma wtedy możliwość anulowania i powrotu do nowej nazwy lub kontynuowania i zastąpienia danych.
Gdy pojawi się drugie okno dialogowe, spodziewam się, że pierwsze okno dialogowe będzie nadal widoczne, dopóki nie zadzwonię. Jednak pierwszy AlertDialog zniknął przed pojawieniem się drugiego AlertDialog. Oznacza to, że odrzucenie zostanie automatycznie wywołane po kliknięciu przycisku. Czy to błąd, czy projekt?
Napisałem testowy przypadek, w którym sprawdziłem na 3 urządzeniach: Nexus S Android 4.0, HTC Rezound Android 2.3 i Motorola Droid Bionic Android 2.3.

Układ

<?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>

Kod

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);
        }       
    } 

} 

Pierwotnie zapisałem okno dialogowe zapisu jako działanie z Androidem: theme = "@ android: style / Theme.Dialog". Interfejs wygląda dobrze na Nexus S i Rezound, ale wygląda okropnie na Droid Bionic (pole edycji i przycisk zajmowały tylko połowę szerokości, druga połowa jest pusta).

questionAnswers(2)

yourAnswerToTheQuestion