Подтвердить что ты не робот

AlertDialog setCancelable (false) метод не работает

Я создал AlertDialog, который работает нормально. Он исчезает, если я нажимаю:
1) кнопка кнопки выхода или 2) кнопка возврата с помощью мыши
Чтобы он оставался сфокусированным даже в вышеприведенных условиях, я добавил в поле ".setCancelable(false)" утверждение при построении. Но я все еще вижу, как диалог исчезает. В чем проблема? Пожалуйста, помогите.

Добавленный код:

return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(title)
                .setCancelable(false)
                .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doNegativeClick();
                        }
                    }
                )
                .create();


Env: Android 4.0 на XP Professional.

4b9b3361

Ответ 1

Является этим вашим полным кодом? то, пожалуйста, измените свой код для установки setCancelable(false) следующим образом

void showDialog() {
    DialogFragment newFragment = MyAlertDialogFragment.newInstance(
            R.string..alert_dialog_two_buttons_title);
    newFragment.setCancelable(false);
    newFragment.show(getFragmentManager(), "dialog");
}

Ответ 2

В диалоговом окне установлено значение no-cancelable, но фрагмент вашего хоста по-прежнему отменяется. Установите фрагмент setCancelable(false).

Ответ 3

Другой рабочий пример:

Шаг 1

Создать класс:

public class DialogActivity extends android.app.DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(R.string.myMessage);
        setCancelable(false);
        return builder.create();
   }
}

Шаг 2

Добавьте метод в Activity:

private boolean showDialog() {
    FragmentManager manager = getFragmentManager();
    DialogActivity dialogActivity;
    dialogActivity = new DialogActivity();
    dialogActivity.show(manager, "DialogActivity");
    return true;
}

Шаг 3

Вызовите showDialog(), когда вам нужно показать диалог

Ответ 4

dialog.setCanceledOnTouchOutside(false);

setCanceledOnTouchOutside(boolean)

Устанавливает, отменяется ли это диалоговое окно при касании вне границ окна. Если установлено значение true, диалоговое окно будет отменено, если оно еще не установлено.

Ответ 5

Самый простой способ реализовать setCancelable - реализовать то же самое при вызове диалога в действии; Таким образом, не непосредственно в диалоговом классе.

 Dialog myDialog = new Dialog();
        myDialog.setCancelable( false );
        myDialog.show( getSupportFragmentManager(),"dialog" );
        return true;