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.
Ответы
Ответ 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;