Die setCancelable(false)-Methode von AlertDialog funktioniert nicht

Lesezeit: 3 Minuten

Benutzer-Avatar
lupchiazoem

Ich hatte einen AlertDialog erstellt, der gut funktioniert. Es verschwindet, wenn ich drücke:

1) Escape-Tastaturtaste oder
2) Zurück-Taste mit der Maus
Damit es auch unter den oben genannten Bedingungen fokussiert bleibt, hatte ich beim Erstellen die Anweisung „.setCancelable(false)“ hinzugefügt. Aber ich sehe immer noch, dass 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();

Umgebung: Android 4.0 auf XP Professional.

  • kannst du bitte deinen Code hochladen?

    – Luzifer

    18. Januar 2012 um 6:51 Uhr

  • ‘.setCancelable(false)’ steht in der vierten Zeile des Codes.

    – lupchiazoem

    18. Januar 2012 um 7:05 Uhr


  • Warum setzt du die setNegativeButton() Teil, wenn Sie nicht möchten, dass Ihr Dialog abgebrochen werden kann?

    – Anastase

    18. Januar 2012 um 8:31 Uhr

  • @Anasthase – Ich möchte die Antwort des Benutzers in Bezug auf Ja oder Nein erfassen.

    – lupchiazoem

    18. Januar 2012 um 10:26 Uhr

  • dialog.setCanceledOnTouchOutside(false)

    – Mirza Adil

    31. März 2020 um 10:30 Uhr

Ist Dies Ihr vollständiger Code? dann ändern Sie bitte Ihren Code für die Einstellung setCancelable(false) so was

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

  • Ja, es hat geholfen. Vielen Dank für Ihre Antwort. Eigentlich war ich gerade dabei, eine Antwort zu verfassen, und inzwischen hatten Sie Ihre gepostet.

    – lupchiazoem

    19. Januar 2012 um 6:03 Uhr

  • Alle – Da es Ihnen dabei helfen könnte, geben Sie diese Informationen an – setCancelable(false) funktioniert nicht im obigen Code, weil AlertDialog Schöpfung gehört dazu DialogFragment Klasse. Bitte klicken Sie in der obigen Antwort auf diesen Link, der auf den vollständigen Code verweist. Aus DialogFragment Klassenbeschreibung – „Dieses Fragment enthält ein Dialog-Objekt, das je nach Status des Fragments entsprechend angezeigt wird. Die Steuerung des Dialogs (Entscheidung, wann er angezeigt, ausgeblendet oder geschlossen werden soll) sollte hier über die API erfolgen, nicht mit direkten Aufrufen der Dialog.”.

    – lupchiazoem

    19. Januar 2012 um 6:05 Uhr

  • Link ist defekt. Versuchen Sie, eine Antwort zu formulieren, die nicht von externen Quellen abhängig ist

    – Nilsor

    12. April 2020 um 8:20 Uhr

Benutzer-Avatar
Grün

Ihr Dialog ist auf nicht kündbar eingestellt, aber Ihr Hostfragment ist immer noch kündbar. Stellen Sie Ihr Fragment mit ein setCancelable(false).

  • Wenn Sie möchten, dass Ihr Dialog abgebrochen werden kann, indem Sie außerhalb davon klicken, aber auch benachrichtigt werden möchten, dass er abgebrochen wurde, setzen Sie Cancelable (true) und überschreiben Sie die Cancel-Methode von Dialogs. @Override public void cancel() {

    – pstorli

    24. Mai 2018 um 18:08 Uhr


Benutzer-Avatar
DoruChidean

dialog.setCanceledOnTouchOutside(false);

setCanceledOnTouchOutside(boolean)

Legt fest, ob dieser Dialog abgebrochen wird, wenn er außerhalb der Fenstergrenzen berührt wird. Wenn dies auf true gesetzt ist, wird der Dialog so eingestellt, dass er abgebrochen werden kann, falls er noch nicht gesetzt ist.

Benutzer-Avatar
Krzysztof Dziuba

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 zu Ihrer hinzufügen Activity:

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

Schritt 3

Anruf showDialog() wenn Sie Dialog zeigen müssen

Der einfachste Weg, “setCancelable” zu implementieren, besteht darin, dasselbe beim Aufrufen des Dialogs in der Aktivität zu implementieren; Also nicht direkt in der Dialogklasse.

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

Benutzer-Avatar
Pratham Kesarkar

In Kotlin, um den Dialog unzulässig zu machen

dialog.isCancelable =false

Benutzer-Avatar
Mohsen Emami

Basierend auf deiner AlertDialog eingeben können Sie:

AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyAlertDialogLayout).setCancelable(false);

oder

AlertDialog alertDialog = builder.create();

alertDialog.setCancelable(false);

1283330cookie-checkDie setCancelable(false)-Methode von AlertDialog funktioniert nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy