Ich hatte einen AlertDialog erstellt, der einwandfrei funktioniert. Es verschwindet, wenn ich drücke:
1) Escape-Tastaturtaste oder
2) Zurück-Taste mit der Maus
Damit es auch unter den oben angegebenen Bedingungen fokussiert bleibt, habe ich beim Erstellen die Anweisung '.setCancelable (false)' hinzugefügt. Aber ich sehe immer noch, wie der Dialog verschwindet. Wo ist das Problem? Bitte helfen Sie.
Code hinzugefügt:
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 unter XP Professional.
android
android-alertdialog
Lupchiazoem
quelle
quelle
setNegativeButton()
Teil ein, wenn Sie nicht möchten, dass Ihr Dialog abgebrochen werden kann?Antworten:
Ist das Ihr vollständiger Code? dann bitte Ihren Code ändern für die Einstellung
setCancelable(false)
wie folgt ausvoid showDialog() { DialogFragment newFragment = MyAlertDialogFragment.newInstance( R.string..alert_dialog_two_buttons_title); newFragment.setCancelable(false); newFragment.show(getFragmentManager(), "dialog"); }
quelle
setCancelable(false)
funktionieren diese Informationen - funktionieren im obigen Code nicht, da dieAlertDialog
Erstellung Teil derDialogFragment
Klasse ist. Bitte klicken Sie auf "diesen" Link in der obigen Antwort, der auf den vollständigen Code verweist. Aus derDialogFragment
Klassenbeschreibung - "Dieses Fragment enthält ein Dialogobjekt, das je nach Status des Fragments entsprechend angezeigt wird. Die Steuerung des Dialogfelds (Entscheidung, wann es angezeigt, ausgeblendet oder geschlossen werden soll) sollte hier über die API erfolgen, nicht bei direkten Aufrufen im Dialog. ".Ihr Dialogfeld ist auf "Nicht stornierbar" eingestellt, Ihr Hostfragment ist jedoch weiterhin stornierbar. Setze dein Fragment mit
setCancelable(false)
.quelle
Ein weiteres Arbeitsbeispiel:
Schritt 1
Klasse erstellen:
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(); } }
Schritt 2
Methode hinzufügen zu
Activity
:private boolean showDialog() { FragmentManager manager = getFragmentManager(); DialogActivity dialogActivity; dialogActivity = new DialogActivity(); dialogActivity.show(manager, "DialogActivity"); return true; }
Schritt 3
Rufen
showDialog()
Sie an, wenn Sie einen Dialog anzeigen müssenquelle
dialog.setCanceledOnTouchOutside(false);
setCanceledOnTouchOutside(boolean)
quelle
Der einfachste Weg, "setCancelable" zu implementieren, besteht darin, dasselbe zu implementieren, wenn Sie den Dialog in der Aktivität aufrufen. Auf diese Weise nicht direkt in der Dialogklasse.
Dialog myDialog = new Dialog(); myDialog.setCancelable( false ); myDialog.show( getSupportFragmentManager(),"dialog" ); return true;
quelle
In Kotlin, um den Dialog nicht abzulehnen
dialog.isCancelable =false
quelle
Abhängig von Ihrem
AlertDialog
Typ können Sie:AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyAlertDialogLayout).setCancelable(false);
oder
AlertDialog alertDialog = builder.create(); alertDialog.setCancelable(false);
quelle
In DialogFragment
Gebraucht:-
dialog.setCanceledOnTouchOutside(false)
quelle