Диалог Android исчезает сам по себе

Я использую следующий код для создания своего собственного диалога:

public void ShowMessageDialog(String str){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(str);
    builder.setCancelable(false);
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {          
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

Он работает нормально, но кажется, что Диалог исчезает сам по себе при использовании внутри этой функции:

public void test(String str){
    ShowMessageDialog("About to start new activity");
    Intent intent = new Intent(this,PageViewer.class);
    startActivity(intent);
}

Кажется, что новая активность создана и, очевидно, избавляется от диалога. Но почему? Не следует ли останавливаться перед открытием нового?

Спасибо!

Ответы

Ответ 1

Намерение, которое собирается запустить, не дожидается отмены вашего диалога. Итак, сразу после отображения диалогового окна запускается новое действие. Вы можете выполнить то, что хотите:

public void ShowMessageDialog(String str){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(str);
    builder.setCancelable(false);
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {          
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            Intent intent = new Intent(this,PageViewer.class);
            startActivity(intent);
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

public void test(String str){
    ShowMessageDialog("About to start new activity");
}