Saya memiliki aktivitas yang menggunakan gaya Theme.Dialog sehingga merupakan jendela mengambang di atas aktivitas lain. Namun, ketika saya mengklik di luar jendela dialog (pada aktivitas latar belakang), dialog ditutup. Bagaimana saya bisa menghentikan perilaku ini?
229
Jawaban:
Ini bisa membantu Anda. Ini adalah cara untuk menangani sentuhan di luar acara:
Bagaimana cara membatalkan Dialog bertema Aktivitas seperti ketika disentuh di luar jendela?
Dengan menangkap acara dan tidak melakukan apa pun, saya pikir Anda dapat mencegah penutupan. Namun yang aneh adalah, perilaku default dialog aktivitas Anda seharusnya tidak menutup sendiri ketika Anda menyentuh luar.
(PS: kodenya menggunakan WindowManager.LayoutParams)
sumber
Untuk mencegah kotak dialog dibubarkan dengan tombol kembali ditekan, gunakan ini
Dan untuk mencegah kotak dialog dibubarkan pada sentuhan luar gunakan ini
sumber
AlertDialog
menutup sentuhan di luar, dan itulah yang diberikan jawaban ini.setCancelable(false)
Apa yang sebenarnya Anda miliki adalah sebuah Aktivitas (walaupun itu terlihat seperti Dialog), oleh karena itu Anda harus menelepon
setFinishOnTouchOutside(false)
dari aktivitas Anda jika Anda ingin tetap terbuka ketika aktivitas latar belakang diklik.EDIT: Ini hanya berfungsi dengan API Android level 11 atau lebih tinggi
sumber
onBackPressed()
tidak melakukan apa pun di tubuh ituApa yang berhasil bagi saya adalah membuat
DialogFragment
set agar tidak dapat dibatalkan:sumber
Saat menggunakan dialog sebagai aktivitas di onCreate, tambahkan ini
sumber
Untuk API 10 yang lebih tinggi, Dialog menghilang ketika disentuh di luar, sedangkan di bawah API 11, Dialog tidak menghilang. Untuk mencegahnya, Anda perlu melakukan:
Dalam
styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
ATAU
Dalam
onCreate()
metode, gunakan:this.setFinishOnTouchOutside(false);
Catatan: untuk API 10 dan lebih rendah, metode ini tidak memiliki efek, dan tidak diperlukan.
sumber
Mengatur dialog yang dapat dibatalkan menjadi salah sudah cukup, dan Anda menyentuh di luar dialog peringatan atau mengklik tombol kembali akan membuat dialog peringatan menghilang. Jadi gunakan yang ini:
setCancelable(false)
Dan fungsi lainnya tidak diperlukan lagi:
dialog.setCanceledOnTouchOutside(false);
Jika Anda membuat dialog sementara dan bertanya-tanya di sana untuk meletakkan baris kode ini, berikut ini sebuah contoh:
sumber
Gunakan Kode Ini Berfungsi untukku
sumber
Tonton tautan ini untuk detail lebih lanjut tentang dialog.
sumber
Secara sederhana,
mencegah pengguna mengklik di luar Kotak Dialog.
sumber
Dialog Peringatan tidak digunakan lagi, jadi gunakan Dialog dialog = Dialog baru (ini);
Untuk mencegah menutup pada sentuhan luar
sumber
Gunakan
setFinishOnTouchOutside(false)
untuk API> 11 dan jangan khawatir karena perilaku default Android-nya bahwa dialog bertema aktivitas tidak akan selesai pada sentuhan luar untuk API <11 :) !! Cheerss !!sumber
Saya menggunakan ini di onCreate (), tampaknya berfungsi pada semua versi Android; diuji pada 5.0 dan 4.4.x, tidak dapat menguji pada Gingerbread, perangkat Samsung (Catatan 1 menjalankan GB) memilikinya dengan cara ini secara default:
sumber
Saya kira ini akan membantu Anda. Ini berhasil bagi saya
sumber
Ini solusinya:
sumber
Juga dimungkinkan untuk menetapkan tindakan berbeda yang mengimplementasikan onCancelListener:
sumber
Saya menghadapi masalah yang sama. Untuk menanganinya, saya mengatur a
OntouchListener
ke dialog dan tidak melakukan apa pun di dalam. Tapi Dialog menampik ketika memutar layar juga. Untuk memperbaikinya saya menetapkan variabel untuk memberi tahu saya jika dialog biasanya ditolak. Kemudian saya mengaturOnDismissListener
dialog saya dan di dalamnya saya memeriksa variabel. Jika dialog telah dismmiss biasanya saya tidak melakukan apa-apa, atau saya menjalankan dialog lagi (dan mengatur statusnya seperti ketika menolak dalam kasus saya).sumber
builder.setCancelable (false);
public void Mensaje (Lihat v) {
sumber
Ini adalah jawaban sempurna untuk semua pertanyaan Anda .... Semoga Anda menikmati pengkodean di Android
sumber