Android 解決dialog彈出時(shí)無法捕捉Activity的back事件問題
Android 如何解決dialog彈出時(shí)無法捕捉Activity的back事件
在一些情況下,我們需要捕捉back鍵事件,然后在捕捉到的事件里寫入我們需要進(jìn)行的處理,通常可以采用下面三種辦法捕捉到back事件:
1)重寫onKeyDown或者onKeyUp方法
2)重寫onBackPressed方法
3)重寫dispatchKeyEvent方法
這三種辦法有什么區(qū)別在這里不進(jìn)行闡述,有興趣的朋友可以查閱相關(guān)資料。
然而在有dialog彈出時(shí),想捕捉back鍵的事件的話,上述三種辦法都無法實(shí)現(xiàn)。因?yàn)樯鲜龇椒ㄊ侵貙懺赼ctivity里面的,也就是說當(dāng)activity是當(dāng)前焦點(diǎn)時(shí),它可以捕捉到相應(yīng)的back鍵事件,而有dialog彈出時(shí),dialog獲取了當(dāng)前焦點(diǎn),所以activity里面的方法無法獲取到back鍵事件,此時(shí)有兩種思路:
1)設(shè)置dialog的setOnCancelListener監(jiān)聽:
selectDialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub // Toast.makeText(getBaseContext(), "點(diǎn)擊了back", Toast.LENGTH_SHORT).show(); } });
這樣就可以捕捉到back鍵的事件了,當(dāng)按下back鍵時(shí),系統(tǒng)默認(rèn)的操作會(huì)讓dialog cancel掉,此時(shí)會(huì)觸發(fā)OnCancelListener,然后在onCancel方法里面就可以實(shí)現(xiàn)自己想要實(shí)現(xiàn)的操作了。
2)設(shè)置dialog的setOnKeyListener并重寫dispatchKeyEvent方法
selectDialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0) { dialog.dismiss(); } return false; } }); public boolean dispatchKeyEvent(KeyEvent event) { switch(event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: Toast.makeText(getBaseContext(), "點(diǎn)擊了back", Toast.LENGTH_SHORT).show(); break; default: break; } return super.dispatchKeyEvent(event); }
然后在dispatchKeyEvent里面就可以實(shí)現(xiàn)自己想要實(shí)現(xiàn)的操作了。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android 全局Dialog的簡單實(shí)現(xiàn)方法
- Android使用Dialog風(fēng)格彈出框的Activity
- Android實(shí)現(xiàn)從底部彈出的Dialog示例(一)
- Android 中從屏幕左下角彈出Dialog動(dòng)畫效果的實(shí)現(xiàn)代碼
- Android中自定義的dialog中的EditText無法彈出輸入法解決方案
- Android 仿蘋果底部彈出Dialog
- Android 從底部彈出Dialog(橫向滿屏)的實(shí)例代碼
- Android解決dialog彈出時(shí)無法捕捉Activity的back事件的方法
- Android自定義彈出框dialog效果
- Android 8.0如何完美適配全局dialog懸浮窗彈出
相關(guān)文章
Android實(shí)現(xiàn)Flip翻轉(zhuǎn)動(dòng)畫效果
這篇文章主要介紹了Android實(shí)現(xiàn)Flip翻轉(zhuǎn)動(dòng)畫效果,對(duì)Android程序設(shè)計(jì)人員有很好的參考借鑒價(jià)值,需要的朋友可以參考下2014-08-08android實(shí)現(xiàn)關(guān)閉或開啟移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)
本篇文章是對(duì)android實(shí)現(xiàn)關(guān)閉或開啟移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06