Bagaimana cara menampilkan dialog lansiran di Android?

1078

Saya ingin menampilkan jendela dialog / sembulan dengan pesan kepada pengguna yang menunjukkan "Anda yakin ingin menghapus entri ini?" dengan satu tombol yang bertuliskan 'Hapus'. Ketika Deletedisentuh, seharusnya menghapus entri itu, jika tidak apa-apa.

Saya telah menulis pendengar klik untuk tombol-tombol itu, tetapi bagaimana cara mengaktifkan dialog atau munculan dan fungsinya?

UMAR-MOBITSOLUTIONS
sumber
Mengapa Anda tidak menggunakan perpustakaan Dialog Material !?
Vivek_Neel
1
Untuk satu, dua, dan tiga contoh tanda tombol, lihat jawaban ini .
Suragch

Jawaban:

1816

Anda bisa menggunakan AlertDialogini untuk dan membangun satu menggunakan Builderkelasnya. Contoh di bawah ini menggunakan konstruktor default yang hanya mengambil dalam Contextkarena dialog akan mewarisi tema yang tepat dari Konteks yang Anda berikan, tetapi ada juga konstruktor yang memungkinkan Anda untuk menentukan sumber daya tema tertentu sebagai parameter kedua jika Anda ingin melakukan begitu.

new AlertDialog.Builder(context)
    .setTitle("Delete entry")
    .setMessage("Are you sure you want to delete this entry?")

    // Specifying a listener allows you to take an action before dismissing the dialog.
    // The dialog is automatically dismissed when a dialog button is clicked.
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) { 
            // Continue with delete operation
        }
     })

    // A null listener allows the button to dismiss the dialog and take no further action.
    .setNegativeButton(android.R.string.no, null)
    .setIcon(android.R.drawable.ic_dialog_alert)
    .show();
David Hedlund
sumber
34
bukankah seharusnya AlertDialog.Builder(this)diganti AlertDialog.Builder(className.this)?
Apurva
23
belum tentu. diperlukan jika Anda membuat dialog peringatan dari beberapa Pendengar.
Alpha
5
Ingat AlertDialog.Builder tidak dapat diberhentikan melalui metode dismiss (). Anda dapat menggunakan dialog AlertDialog atau AlertDialog.Builder (konteks) .create (); dan Anda akan dapat memanggil pemberhentian () secara normal.
Fustigador
2
Tidak berfungsi pada pemilihan item laci, tapi yang ini berhasil: stackoverflow.com/a/26097588/1953178
Amro Shafie
4
Not true @Fustigador
Ajay
346

Coba kode ini:

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();
Mahesh
sumber
4
+1. Ini adalah cara yang jauh lebih baik untuk melakukannya. @Mahesh telah membuat turunan dialog dan karenanya dapat diakses cancel()dan sebagainya.
Subby
2
Apakah builder1.create()perlu karena tampaknya berfungsi dengan baik ketika Anda menelepon builder1.show()langsung?
razz
2
@razzak ya itu perlu karena memberikan kami contoh dialog. kita dapat menggunakan instance dialog untuk mengakses metode dialog khusus
Mahesh
1
Saya mencoba metode ini tetapi jendela peringatan muncul dan segera menghilang, tanpa memberi saya waktu untuk membacanya. Saya jelas tidak punya waktu untuk mengklik tombol untuk mengabaikannya juga. Ada yang tahu kenapa?
lweingart
1
Nevermind, saya menemukan alasan mengapa, saya meluncurkan Intent baru dan tidak menunggu jendela peringatan saya muncul, seperti yang saya dapat temukan di sini: stackoverflow.com/questions/6336930/…
lweingart
99

Kode yang diposting oleh David Hedlund memberi saya kesalahan:

Tidak dapat menambahkan jendela - token null tidak valid

Jika Anda mendapatkan kesalahan yang sama gunakan kode di bawah ini. Berhasil!!

runOnUiThread(new Runnable() {
    @Override
    public void run() {

        if (!isFinishing()){
            new AlertDialog.Builder(YourActivity.this)
              .setTitle("Your Alert")
              .setMessage("Your Message")
              .setCancelable(false)
              .setPositiveButton("ok", new OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      // Whatever...
                  }
              }).show();
        }
    }
});
pengguna3716835
sumber
3
Kami tidak perlu menggunakan keduanya create()dan show(), karena show()sudah membuat dialog dengan konten yang dijelaskan. Menurut dokumentasi, create() Membuat AlertDialog dengan argumen yang disediakan untuk pembangun ini. Itu tidak Dialog.show () dialog. Ini memungkinkan pengguna untuk melakukan pemrosesan tambahan sebelum menampilkan dialog. Gunakan show () jika Anda tidak memiliki proses lain untuk dilakukan dan ingin ini dibuat dan ditampilkan. Karena itu hanya berguna untuk digunakan create()jika Anda berencana untuk menampilkan dialog nanti, dan Anda memuat kontennya terlebih dahulu.
Ruchir Baronia
Mengubah param dari getApplicationContext()menjadi MyActivity.thisdan mulai bekerja.
O-9
70

Hanya yang sederhana! Buat metode dialog, sesuatu seperti ini di mana saja di kelas Java Anda:

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();
}

Sekarang buat Layout XML dialog_demo.xmldan buat UI / desain Anda. Berikut adalah contoh yang saya buat untuk keperluan demo:

<?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>

Sekarang Anda dapat menelepon openDialog()dari mana saja yang Anda suka :) Ini adalah screenshot dari kode di atas.

Masukkan deskripsi gambar di sini

Perhatikan bahwa teks dan warna digunakan dari strings.xmldan colors.xml. Anda bisa menentukan sendiri.

Madan Sapkota
sumber
4
Kelas Dialog adalah kelas dasar untuk dialog, tetapi Anda harus menghindari instantiating Dialog secara langsung. Sebagai gantinya, gunakan salah satu dari subclass berikut: AlertDialog, DatePickerDialog or TimePickerDialog(dari developer.android.com/guide/topics/ui/dialogs.html )
sweisgerber.dev
"Batalkan" dan "Setuju" tidak dapat diklik di sini.
c1ph4
63

Gunakan 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();

Anda akan mendapatkan output berikut.

dialog peringatan android

Untuk melihat tutorial dialog lansiran, gunakan tautan di bawah ini.

Tutorial Dialog Peringatan Android

Richard Kamere
sumber
44

Anda dapat menggunakan kode ini:

AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(
    AlertDialogActivity.this);

// Setting Dialog Title
alertDialog2.setTitle("Confirm Delete...");

// Setting Dialog Message
alertDialog2.setMessage("Are you sure you want delete this file?");

// Setting Icon to Dialog
alertDialog2.setIcon(R.drawable.delete);

// Setting Positive "Yes" Btn
alertDialog2.setPositiveButton("YES",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Write your code here to execute after dialog
            Toast.makeText(getApplicationContext(),
                           "You clicked on YES", Toast.LENGTH_SHORT)
                    .show();
        }
    });

// Setting Negative "NO" Btn
alertDialog2.setNegativeButton("NO",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Write your code here to execute after dialog
            Toast.makeText(getApplicationContext(),
                           "You clicked on NO", Toast.LENGTH_SHORT)
                    .show();
            dialog.cancel();
        }
    });

// Showing Alert Dialog
alertDialog2.show();
pria romain
sumber
1
dialog.cancel (); tidak boleh dipanggil pada pendengar kedua
demaksee
tautan "tutorial ini" rusak. Membawa Anda ke " store.hp.com/... "
JamesDeHart
39

untuk saya

new AlertDialog.Builder(this)
    .setTitle("Closing application")
    .setMessage("Are you sure you want to exit?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {

          }
     }).setNegativeButton("No", null).show();
Hoàng Đăng
sumber
33
// Dialog box

public void dialogBox() {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setMessage("Click on Image for tag");
    alertDialogBuilder.setPositiveButton("Ok",
        new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
        }
    });

    alertDialogBuilder.setNegativeButton("cancel",
        new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int arg1) {

        }
    });

    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
}
Anil Singhania
sumber
1
Kode Anda salah, Anda perlu mengubah setPositiveButton ("batal" menjadi setNegativeButton ("batal"
Benoist Laforge
Terima kasih, Ini terjadi karena kesalahan ... Sebenarnya saya ingin memeriksa apakah ada yang bisa memeriksa kode yang diposting secara mendalam atau tidak. Dan
Anil Singhania
31
new AlertDialog.Builder(context)
    .setTitle("title")
    .setMessage("message")
    .setPositiveButton(android.R.string.ok, null)
    .show();
user3219477
sumber
23

Ini adalah contoh dasar tentang cara membuat Dialog Peringatan :

AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setCancelable(false);
dialog.setTitle("Dialog on Android");
dialog.setMessage("Are you sure you want to delete this entry?" );
dialog.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int id) {
        //Action for "Delete".
    }
})
        .setNegativeButton("Cancel ", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            //Action for "Cancel".
            }
        });

final AlertDialog alert = dialog.create();
alert.show();

masukkan deskripsi gambar di sini

Jorgesys
sumber
15

Ini jelas membantu Anda. Coba kode ini: Pada klik tombol, Anda dapat meletakkan satu, dua atau tiga tombol dengan dialog peringatan ...

SingleButtton.setOnClickListener(new View.OnClickListener() {

    public void onClick(View arg0) {
        // Creating alert Dialog with one Button

        AlertDialog alertDialog = new AlertDialog.Builder(AlertDialogActivity.this).create();

        // Setting Dialog Title
        alertDialog.setTitle("Alert Dialog");

        // Setting Dialog Message
        alertDialog.setMessage("Welcome to Android Application");

        // Setting Icon to Dialog
        alertDialog.setIcon(R.drawable.tick);

        // Setting OK Button
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog,int which)
            {
                // Write your code here to execute after dialog    closed
                Toast.makeText(getApplicationContext(),"You clicked on OK", Toast.LENGTH_SHORT).show();
            }
        });

        // Showing Alert Message
        alertDialog.show();
    }
});

btnAlertTwoBtns.setOnClickListener(new View.OnClickListener() {

    public void onClick(View arg0) {
        // Creating alert Dialog with two Buttons

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(AlertDialogActivity.this);

        // Setting Dialog Title
        alertDialog.setTitle("Confirm Delete...");

        // Setting Dialog Message
        alertDialog.setMessage("Are you sure you want delete this?");

        // Setting Icon to Dialog
        alertDialog.setIcon(R.drawable.delete);

        // Setting Positive "Yes" Button
        alertDialog.setPositiveButton("YES",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int which) {
                        // Write your code here to execute after dialog
                        Toast.makeText(getApplicationContext(), "You clicked on YES", Toast.LENGTH_SHORT).show();
                    }
                });

        // Setting Negative "NO" Button
        alertDialog.setNegativeButton("NO",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,    int which) {
                        // Write your code here to execute after dialog
                        Toast.makeText(getApplicationContext(), "You clicked on NO", Toast.LENGTH_SHORT).show();
                        dialog.cancel();
                    }
                });

        // Showing Alert Message
        alertDialog.show();
    }
});

btnAlertThreeBtns.setOnClickListener(new View.OnClickListener() {

    public void onClick(View arg0) {
        // Creating alert Dialog with three Buttons

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                AlertDialogActivity.this);

        // Setting Dialog Title
        alertDialog.setTitle("Save File...");

        // Setting Dialog Message
        alertDialog.setMessage("Do you want to save this file?");

        // Setting Icon to Dialog
        alertDialog.setIcon(R.drawable.save);

        // Setting Positive Yes Button
        alertDialog.setPositiveButton("YES",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog,
                        int which) {
                    // User pressed Cancel button. Write Logic Here
                    Toast.makeText(getApplicationContext(),
                            "You clicked on YES",
                            Toast.LENGTH_SHORT).show();
                }
            });

        // Setting Negative No Button... Neutral means in between yes and cancel button
        alertDialog.setNeutralButton("NO",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog,
                        int which) {
                    // User pressed No button. Write Logic Here
                    Toast.makeText(getApplicationContext(),
                            "You clicked on NO", Toast.LENGTH_SHORT)
                            .show();
                }
            });

        // Setting Positive "Cancel" Button
        alertDialog.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog,
                        int which) {
                    // User pressed Cancel button. Write Logic Here
                    Toast.makeText(getApplicationContext(),
                            "You clicked on Cancel",
                            Toast.LENGTH_SHORT).show();
                }
            });
        // Showing Alert Message
        alertDialog.show();
    }
});
Mitul Goti
sumber
14

Saya telah membuat dialog untuk menanyakan Seseorang apakah dia ingin memanggil Seseorang atau tidak.

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class Firstclass extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.first);

        ImageView imageViewCall = (ImageView) findViewById(R.id.ring_mig);

        imageViewCall.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v)
            {
                try
                {
                    showDialog("0728570527");
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
    }

    public void showDialog(final String phone) throws Exception
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(Firstclass.this);

        builder.setMessage("Ring: " + phone);

        builder.setPositiveButton("Ring", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);// (Intent.ACTION_CALL);

                callIntent.setData(Uri.parse("tel:" + phone));

                startActivity(callIntent);

                dialog.dismiss();
            }
        });

        builder.setNegativeButton("Avbryt", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.dismiss();
            }
        });

        builder.show();
    }
}
Nepster
sumber
14

Anda bisa mencoba ini ....

    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setCancelable(false);
dialog.setTitle("Dialog on Android");
dialog.setMessage("Are you sure you want to delete this entry?" );
dialog.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int id) {
        //Action for "Delete".
    }
})
        .setNegativeButton("Cancel ", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            //Action for "Cancel".
            }
        });

final AlertDialog alert = dialog.create();
alert.show();

Untuk info lebih lanjut, periksa tautan ini ...

Tamzid Babu
sumber
11

Anda dapat membuat kotak dialog menggunakan AlertDialog.Builder

Coba ini:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Are you sure you want to delete this entry?");

        builder.setPositiveButton("Yes, please", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //perform any action
                Toast.makeText(getApplicationContext(), "Yes clicked", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //perform any action
                Toast.makeText(getApplicationContext(), "No clicked", Toast.LENGTH_SHORT).show();
            }
        });

        //creating alert dialog
        AlertDialog alertDialog = builder.create();
        alertDialog.show();

Untuk mengubah warna tombol dialog positif & negatif Anda dapat menulis di bawah dua baris berikut alertDialog.show();

alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.colorPrimary));
alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(getResources().getColor(R.color.colorPrimaryDark));

masukkan deskripsi gambar di sini

Hassnain Jamil
sumber
11

Coba kode ini

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);

    // set title
    alertDialogBuilder.setTitle("AlertDialog Title");

    // set dialog message
    alertDialogBuilder
            .setMessage("Some Alert Dialog message.")
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                            Toast.makeText(this, "OK button click ", Toast.LENGTH_SHORT).show();

                }
            })
            .setNegativeButton("CANCEL",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                           Toast.makeText(this, "CANCEL button click ", Toast.LENGTH_SHORT).show();

                    dialog.cancel();
                }
            });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();
Faxriddin Abdullayev
sumber
10
showDialog(MainActivity.this, "title", "message", "OK", "Cancel", {...}, {...});

Kotlin

fun showDialog(context: Context, title: String, msg: String,
               positiveBtnText: String, negativeBtnText: String?,
               positiveBtnClickListener: DialogInterface.OnClickListener,
               negativeBtnClickListener: DialogInterface.OnClickListener?): AlertDialog {
    val builder = AlertDialog.Builder(context)
            .setTitle(title)
            .setMessage(msg)
            .setCancelable(true)
            .setPositiveButton(positiveBtnText, positiveBtnClickListener)
    if (negativeBtnText != null)
        builder.setNegativeButton(negativeBtnText, negativeBtnClickListener)
    val alert = builder.create()
    alert.show()
    return alert
}

Jawa

public static AlertDialog showDialog(@NonNull Context context, @NonNull String title, @NonNull String msg,
                                     @NonNull String positiveBtnText, @Nullable String negativeBtnText,
                                     @NonNull DialogInterface.OnClickListener positiveBtnClickListener,
                                     @Nullable DialogInterface.OnClickListener negativeBtnClickListener) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context)
            .setTitle(title)
            .setMessage(msg)
            .setCancelable(true)
            .setPositiveButton(positiveBtnText, positiveBtnClickListener);
    if (negativeBtnText != null)
        builder.setNegativeButton(negativeBtnText, negativeBtnClickListener);
    AlertDialog alert = builder.create();
    alert.show();
    return alert;
}
Khemraj
sumber
8
   new AlertDialog.Builder(v.getContext()).setMessage("msg to display!").show();
Adeeb karim
sumber
Penjelasan Tolong
GYaN
5
Tidak ada penjelasan. Jawaban ini sempurna, dan segala upaya untuk menambahkan kata-kata untuk menenangkan bot "Penjelasan tolong" akan membuatnya lebih buruk.
Don Hatch
7

Berhati-hatilah saat Anda ingin mengabaikan dialog - gunakan dialog.dismiss(). Dalam upaya pertama saya, saya menggunakan dismissDialog(0)(yang mungkin saya salin dari suatu tempat) yang kadang-kadang berfungsi. Menggunakan objek, persediaan sistem terdengar seperti pilihan yang lebih aman.

Ivaylo Novakov
sumber
7

Saya ingin menambahkan jawaban yang bagus kepada David Hedlund dengan membagikan metode yang lebih dinamis daripada yang dia posting sehingga dapat digunakan ketika Anda memiliki tindakan negatif untuk dilakukan dan ketika tidak, saya harap ini membantu.

private void showAlertDialog(@NonNull Context context, @NonNull String alertDialogTitle, @NonNull String alertDialogMessage, @NonNull String positiveButtonText, @Nullable String negativeButtonText, @NonNull final int positiveAction, @Nullable final Integer negativeAction, @NonNull boolean hasNegativeAction)
{
    AlertDialog.Builder builder;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Dialog_Alert);
    } else {
        builder = new AlertDialog.Builder(context);
    }
    builder.setTitle(alertDialogTitle)
            .setMessage(alertDialogMessage)
            .setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    switch (positiveAction)
                    {
                        case 1:
                            //TODO:Do your positive action here 
                            break;
                    }
                }
            });
            if(hasNegativeAction || negativeAction!=null || negativeButtonText!=null)
            {
            builder.setNegativeButton(negativeButtonText, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    switch (negativeAction)
                    {
                        case 1:
                            //TODO:Do your negative action here
                            break;
                        //TODO: add cases when needed
                    }
                }
            });
            }
            builder.setIcon(android.R.drawable.ic_dialog_alert);
            builder.show();
}
Medina Nualart Martin
sumber
4

Anda dapat mencoba cara ini juga, itu akan memberikan Anda dialog gaya materi

private void showDialog()
{
    String text2 = "<font color=#212121>Medi Notification</font>";//for custom title color

    AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
    builder.setTitle(Html.fromHtml(text2));

    String text3 = "<font color=#A4A4A4>You can complete your profile now or start using the app and come back later</font>";//for custom message
    builder.setMessage(Html.fromHtml(text3));

    builder.setPositiveButton("DELETE", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
            toast = Toast.makeText(getApplicationContext(), "DELETE", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();              
        }
    });

    builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
            toast = Toast.makeText(getApplicationContext(), "CANCEL", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
        }
    });
    builder.show();
}
Nilabja
sumber
4
public void showSimpleDialog(View view) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setCancelable(false);
    builder.setTitle("AlertDialog Title");
    builder.setMessage("Simple Dialog Message");
    builder.setPositiveButton("OK!!!", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            //
        }
    })
    .setNegativeButton("Cancel ", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    // Create the AlertDialog object and return it
    builder.create().show();
}

Lihat juga blog saya di Dialog di Android, Anda akan menemukan semua detailnya di sini: http://www.fahmapps.com/2016/09/26/dialogs-in-android-part1/ .

Faheem
sumber
4

Buat metode statis ini dan gunakan di mana pun Anda inginkan.

public static void showAlertDialog(Context context, String title, String message, String posBtnMsg, String negBtnMsg) {
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle(title);
            builder.setMessage(message);
            builder.setPositiveButton(posBtnMsg, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            builder.setNegativeButton(negBtnMsg, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            AlertDialog dialog = builder.create();
            dialog.show();

        }
Abdul Basit Rishi
sumber
4

Saya menggunakan metode AlertDialogtombol onClickini:

button.setOnClickListener(v -> {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater layoutInflaterAndroid = LayoutInflater.from(this);
    View view2 = layoutInflaterAndroid.inflate(R.layout.cancel_dialog, null);
    builder.setView(view2);
    builder.setCancelable(false);
    final AlertDialog alertDialog = builder.create();
    alertDialog.show();

    view2.findViewById(R.id.yesButton).setOnClickListener(v1 -> onBackPressed());
    view2.findViewById(R.id.nobutton).setOnClickListener(v12 -> alertDialog.dismiss());
});

dialog.xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:id="@+id/textmain"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:gravity="center"
    android:padding="5dp"
    android:text="@string/warning"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


<TextView
    android:id="@+id/textpart2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:gravity="center"
    android:lines="2"
    android:maxLines="2"
    android:padding="5dp"
    android:singleLine="false"
    android:text="@string/dialog_cancel"
    android:textAlignment="center"
    android:textColor="@android:color/black"
    android:textSize="15sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textmain" />


<TextView
    android:id="@+id/yesButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="40dp"
    android:layout_marginTop="5dp"
    android:layout_marginEnd="40dp"
    android:layout_marginBottom="5dp"
    android:background="#87cefa"
    android:gravity="center"
    android:padding="10dp"
    android:text="@string/yes"
    android:textAlignment="center"
    android:textColor="@android:color/black"
    android:textSize="15sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textpart2" />


<TextView
    android:id="@+id/nobutton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="40dp"
    android:layout_marginTop="5dp"
    android:layout_marginEnd="40dp"
    android:background="#87cefa"
    android:gravity="center"
    android:padding="10dp"
    android:text="@string/no"
    android:textAlignment="center"
    android:textColor="@android:color/black"
    android:textSize="15sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/yesButton" />


<TextView
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:layout_margin="5dp"
    android:padding="10dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/nobutton" />
</androidx.constraintlayout.widget.ConstraintLayout>
DEVSHK
sumber
Harap perbarui kode yang disediakan dengan penjelasan tentang apa sebenarnya yang dilakukannya.
wscourge
3

Dialog lansiran dengan teks edit

AlertDialog.Builder builder = new AlertDialog.Builder(context);//Context is activity context
final EditText input = new EditText(context);
builder.setTitle(getString(R.string.remove_item_dialog_title));
        builder.setMessage(getString(R.string.dialog_message_remove_item));
 builder.setTitle(getString(R.string.update_qty));
            builder.setMessage("");
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            input.setLayoutParams(lp);
            input.setHint(getString(R.string.enter_qty));
            input.setTextColor(ContextCompat.getColor(context, R.color.textColor));
            input.setInputType(InputType.TYPE_CLASS_NUMBER);
            input.setText("String in edit text you want");
            builder.setView(input);
   builder.setPositiveButton(getString(android.R.string.ok),
                (dialog, which) -> {

//Positive button click event
  });

 builder.setNegativeButton(getString(android.R.string.cancel),
                (dialog, which) -> {
//Negative button click event
                });
        AlertDialog dialog = builder.create();
        dialog.show();
Ashik Azeez
sumber
2
AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("This is Title");
    builder.setMessage("This is message for Alert Dialog");
    builder.setPositiveButton("Positive Button", (dialog, which) -> onBackPressed());
    builder.setNegativeButton("Negative Button", (dialog, which) -> dialog.cancel());
    builder.show();

Ini adalah cara yang sama untuk membuat dialog Alert dengan beberapa baris kode.

ajay singh
sumber
2

Kode untuk menghapus entri dari daftar

 /*--dialog for delete entry--*/
private void cancelBookingAlert() {
    AlertDialog dialog;
    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this, R.style.AlertDialogCustom);
    alertDialog.setTitle("Delete Entry");
    alertDialog.setMessage("Are you sure you want to delete this entry?");
    alertDialog.setCancelable(false);

    alertDialog.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
           //code to delete entry
        }
    });

    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    dialog = alertDialog.create();
    dialog.show();
}

Panggil metode di atas pada klik tombol hapus

Android Geek
sumber
1

Dengan Anko (perpustakaan resmi dari pengembang Kotlin), Anda dapat menggunakannya dengan mudah

alert("Alert title").show()

atau lebih kompleks:

alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
    yesButton { toast("Oh…") }
    noButton {}
}.show()

Untuk mengimpor Anko:

implementation "org.jetbrains.anko:anko:0.10.8"
Francis
sumber
0

Anda dapat membuat Aktivitas dan memperluas AppCompatActivity. Kemudian di Manifestasikan style selanjutnya:

<activity android:name=".YourCustomDialog"
            android:theme="Theme.AppCompat.Light.Dialog">
</activity>

Mengembanginya dengan Tombol dan TextViews

Kemudian gunakan ini seperti dialog.

Misalnya, dalam linearLayout saya mengisi parameter berikutnya:

android:layout_width="300dp"
android:layout_height="wrap_content"
EvgeTymo
sumber
0

Dalam beberapa hari terakhir rekan kerja saya terus bertanya padaku tentang menggunakan AlertDialogdalam Xamarin.Androiddan hampir semua dari mereka terkirim pertanyaan ini sebagai ref yang mereka baca sebelum meminta saya (dan tidak menemukan jawabannya), jadi di sini adalah Xamarin.Android( C#) versi:

var alertDialog = new AlertDialog.Builder(this) // this: Activity
    .SetTitle("Hello!")
    .SetMessage("Are you sure?")
    .SetPositiveButton("Ok", (sender, e) => { /* ok things */ })
    .SetNegativeButton("Cancel", (sender, e) => { /* cancel things */ })
    .Create();

alertDialog.Show();

// you can customize your AlertDialog, like so
var tvMessage = alertDialog.FindViewById<TextView>(Android.Resource.Id.Message);
tvMessage.TextSize = 13;
// ...
Mehdi Dehghani
sumber