Saya mengembangkan aplikasi yang ketika tombol ditekan, itu membuka dialog dengan tombol OK dan Batal.
Ini bekerja dengan baik.
Saat pengguna menekan tombol kembali, saya menangani ini sebagai berikut
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Tetapi metode di atas tidak disebut. Bagaimana saya bisa menangani ini?
Jawaban:
sumber
Dialog
;finish()
sudah mengurus ini. Selain itu, metode ini mungkin harus kembalifalse
untuk dapat menangkap peristiwa penting di tempat lain&& event.getAction() == KeyEvent.ACTION_UP
ke jawabannya. Tanpanya, blok kode akan dieksekusi dua kali. (Tombol KE BAWAH dan KE ATAS). Dalam contoh ini, ini tidak terlalu penting, tetapi untuk tindakan selain finish (), ini mungkin sangat penting.dialog.dismiss()
akan bocor memori.finish()
dandialog.dismiss()
harus diubah dalam kode di atas.Sepertinya Anda ingin menyetel OnCancelListener saat Anda membuat Dialog. Ini terlihat seperti ini:
sumber
Anda perlu mengganti
OnCancel
metode. Metode ini membutuhkan penekanan Tombol Kembali. Inilah kode yang bekerja sempurna untuk saya.Semoga ini akan membantu Anda, dan menerimanya jika itu membantu Anda.
Terima kasih..
sumber
Coba ini
sumber
Jika Anda menggunakan DialogFragment, dari yang saya tahu cara yang benar untuk melakukannya adalah dengan mengganti onCancel ()
Saya perhatikan
setOnCancelListener
tidak berfungsi, dansetOnKeyListener
berfungsi, tetapi bagi saya memiliki efek samping yang menyenangkan yaitu menelan semua kunci jika dialog Anda memiliki teks edit.sumber
itu karena ketika Dialog Anda terbuka, maka jendela Anda menavigasi fokusnya ke Dialog. Jadi sekarang Anda harus menangani
key
Dialog Anda.sumber
key
dalam Dialog.Timpa metode
onBackPressed()
dalam dialog Anda sendiri dan gunakan dalam kode Anda:Menggunakan:
sumber
Kode ini berfungsi:
sumber