Wie zeige ich einen Warndialog auf Android an?

Lesezeit: 4 Minuten

Ich möchte ein Dialog-/Popup-Fenster mit einer Meldung für den Benutzer anzeigen, die besagt: “Möchten Sie diesen Eintrag wirklich löschen?” mit einer Schaltfläche, die ‘Löschen’ sagt. Wann Delete berührt wird, sollte dieser Eintrag gelöscht werden, sonst nichts.

Ich habe einen Klick-Listener für diese Schaltflächen geschrieben, aber wie rufe ich einen Dialog oder ein Popup und seine Funktionalität auf?

  • Hier sind Sie ja : developer.android.com/guide/topics/ui/dialogs.html

    – Michael Polla

    25. Juli 2016 um 14:43 Uhr

  • Warum verwenden Sie nicht die Materialdialogbibliothek!?

    – Vivek_Neel

    28. Juli 2016 um 18:04 Uhr

  • Beispiele für Warnungen mit einer, zwei und drei Tasten finden Sie in dieser Antwort.

    – Suragch

    20. April 2017 um 12:21 Uhr

  • Mögliches Duplikat von How to Implement a Confirmation (Yes/No) DialogPreference?

    – Alwin Kesler

    12. März 2018 um 5:26 Uhr

Versuchen Sie diesen Code:

AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
builder1.setMessage("Write your message here.");
builder1.setCancelable(true);

builder1.setPositiveButton(
    "Yes",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });

builder1.setNegativeButton(
    "No",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });

AlertDialog alert11 = builder1.create();
alert11.show();

  • +1. Dies ist ein viel besserer Weg, es zu tun. @Mahesh hat eine Instanz des Dialogs erstellt und ist daher zugänglich cancel() und so weiter.

    – Subby

    3. August 2014 um 19:04 Uhr


  • Ist builder1.create() notwendig, weil es beim Anruf gut zu funktionieren scheint builder1.show() direkt?

    – rasieren

    4. Januar 2016 um 16:01 Uhr

  • @razzak ja, es ist notwendig, weil es uns eine Dialoginstanz zur Verfügung stellt. Wir können die Dialoginstanz verwenden, um auf die dialogspezifische Methode zuzugreifen

    – Mahesh

    5. Januar 2016 um 9:48 Uhr

  • Ich versuche diese Methode, aber das Warnfenster erscheint und verschwindet sofort, ohne dass ich Zeit habe, es zu lesen. Ich habe offensichtlich auch keine Zeit, auf die Schaltflächen zu klicken, um es zu schließen. Irgendeine Idee warum?

    – lweinart

    6. Januar 2016 um 14:33 Uhr

  • Egal, ich habe den Grund dafür gefunden, dass ich einen neuen Intent ausgelöst habe und nicht darauf gewartet habe, dass meine Warnfenster erscheinen, wie ich hier finden konnte: stackoverflow.com/questions/6336930/…

    – lweinart

    6. Januar 2016 um 14:43 Uhr

  • Wir müssen nicht beide verwenden create() und show()als show() erstellt bereits den Dialog mit dem beschriebenen Inhalt. Laut Dokumentation, create() Erstellt einen AlertDialog mit den für diesen Builder bereitgestellten Argumenten. Es zeigt nicht den Dialog Dialog.show(). Dadurch kann der Benutzer zusätzliche Verarbeitungen vornehmen, bevor er den Dialog anzeigt. Verwenden Sie show(), wenn Sie keine andere Verarbeitung zu tun haben und möchten, dass diese erstellt und angezeigt wird. Daher ist es nur sinnvoll zu verwenden create() wenn Sie vorhaben, den Dialog später anzuzeigen, und Sie seinen Inhalt im Voraus laden.

    – Ruchir Baronia

    6. August 2016 um 18:22 Uhr

  • Parameter geändert von getApplicationContext() zu MyActivity.this und begann zu arbeiten.

    – O-9

    25. Juni 2019 um 9:27 Uhr

Verwenden AlertDialog.Builder :

AlertDialog alertDialog = new AlertDialog.Builder(this)
//set icon 
 .setIcon(android.R.drawable.ic_dialog_alert)
//set title
.setTitle("Are you sure to Exit")
//set message
.setMessage("Exiting will call finish() method")
//set positive button
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
   //set what would happen when positive button is clicked    
        finish();
    }
})
//set negative button
.setNegativeButton("No", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
   //set what should happen when negative button is clicked
        Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
    }
})
.show();

Sie erhalten die folgende Ausgabe.

Android-Alarmdialog

Verwenden Sie den folgenden Link, um das Tutorial für Warndialoge anzuzeigen.

Anleitung zum Android-Alarmdialog

Nur eine einfache! Erstellen Sie irgendwo in Ihrer Java-Klasse eine Dialogmethode, etwa so:

public void openDialog() {
    final Dialog dialog = new Dialog(context); // Context, this, etc.
    dialog.setContentView(R.layout.dialog_demo);
    dialog.setTitle(R.string.dialog_title);
    dialog.show();
}

Erstellen Sie nun Layout-XML dialog_demo.xml und erstellen Sie Ihr UI/Design. Hier ist ein Beispiel, das ich zu Demozwecken erstellt habe:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/dialog_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/dialog_text"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_below="@id/dialog_info">

        <Button
            android:id="@+id/dialog_cancel"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.50"
            android:background="@color/dialog_cancel_bgcolor"
            android:text="Cancel"/>

        <Button
            android:id="@+id/dialog_ok"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.50"
            android:background="@color/dialog_ok_bgcolor"
            android:text="Agree"/>
    </LinearLayout>
</RelativeLayout>

Jetzt können Sie anrufen openDialog() von überall her 🙂 Hier ist der Screenshot des obigen Codes.

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass Text und Farbe von verwendet werden strings.xml und colors.xml. Sie können Ihre eigenen definieren.

Heutzutage ist es besser, DialogFragment anstelle der direkten AlertDialog-Erstellung zu verwenden.

  • Wie? Siehe: https://stackoverflow.com/a/21032871/1390874
  • Warum? Siehe: https://stackoverflow.com/a/13765411/1390874

  • Außerdem hatte ich so viele Probleme beim Versuch, einen seltsamen System-AlertDialog-Hintergrund loszuwerden, wenn ich ihn mit meiner benutzerdefinierten Inhaltsansicht aufblähte.

    – goRGon

    23. Juli 2015 um 21:06 Uhr


963530cookie-checkWie zeige ich einen Warndialog auf Android an?

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

Privacy policy