Apa perbedaan antara dialog yang dibubarkan atau dibatalkan di Android?

194

Seperti judulnya, apa perbedaan antara dialog yang dibubarkan atau dibatalkan di Android?

Aal
sumber

Jawaban:

188

Biasanya, dialog diberhentikan saat tugasnya selesai dan dihapus dari layar. Dialog dibatalkan ketika pengguna ingin keluar dari dialog dan menekan tombol Kembali.

Misalnya, Anda memiliki dialog Ya / Tidak standar di layar. Jika pengguna mengklik Tidak, maka dialog ditolak dan nilai untuk Tidak dikembalikan ke pemanggil. Jika alih-alih memilih Ya atau Tidak, pengguna mengklik Kembali untuk keluar dari dialog daripada membuat pilihan kemudian dialog dibatalkan dan tidak ada nilai yang dikembalikan ke pemanggil.

Lee
sumber
Terima kasih balasannya. Saya mencoba mengatur apa yang terjadi jika pengguna menekan tombol batal pada datepicker. Pertama saya mencoba menggunakan pendengar pemberhentian, dan itu berhasil, tetapi juga terjadi jika pengguna memilih waktu. Lalu saya mencoba membatalkan pendengar, dan itu tidak pernah padam, bahkan jika saya mendorong membatalkan. Apakah Anda tahu apa yang harus saya lakukan?
Aal
2
Jika Anda menggunakan DatePickerDialog, Anda harus menggunakan OnDateSetListener untuk mendapatkan pemberitahuan ketika tanggal berubah. Jika seseorang mengklik tombol batal ... maka itu tidak akan dipanggil dan dialog akan hilang dengan sendirinya. Untuk penggunaan normal DatePickerDialog, Anda tidak perlu mengatur pendengar lain.
Lee
FYI, tombol kembali memicu pendengar batal dan pendengar pemberhentian.
Urban
28

dismissadalah sesuatu yang harus Anda panggil secara eksplisit dalam kode Anda, biasanya untuk menanggapi acara klik pada tombol di Anda Dialog. Jika Anda suka, Anda dapat menghubungi dismissDialogdi Activity, yang pada akan mengubah panggilan dismisspada Dialog.

The cancelMetode hanya mengeksekusi ketika secara eksplisit disebut dalam kode Anda, atau ketika pengguna menekan tombol BACK ketika dibatalkan Anda Dialogterbuka (seperti @Lee dicatat).

Jika Anda menggunakan DatePicker, maka semua ini masih terjadi. Seperti @Lee katakan, DatePickerDialog.OnDateSetListenerhanya mendeteksi ketika pengguna telah memilih tanggal dari DatePicker.

Itu Android Developer Referensi menyediakan info lebih lanjut tentang Dialogs.

jagoan309
sumber
Anda juga dapat memanggil cancelmetode. Ada dua pendengar berbeda untuk dimissing dan canceling.
creativecreatorormaybenot
12

DismissMemanggil pemberhentian menghapus dialog dari layar. Metode ini dapat dipanggil dengan aman dari utas apa pun. Perhatikan bahwa Anda tidak harus mengesampingkan metode ini untuk melakukan pembersihan ketika dialog ditolak, melainkan menerapkannya di onStop .

CancelMemanggil pembatalan, membatalkan dialog. Ini pada dasarnya sama dengan memanggil dismiss () , tetapi juga akan memanggil DialogInterface.OnCancelListener Anda , jika terdaftar.

Hide Metode ini menyembunyikan dialog, tetapi jangan mengabaikannya.

Dan untuk lebih lanjut lihat di sini

ucMedia
sumber