Android 解決dialog彈出時無法捕捉Activity的back事件問題
Android 如何解決dialog彈出時無法捕捉Activity的back事件
在一些情況下,我們需要捕捉back鍵事件,然后在捕捉到的事件里寫入我們需要進行的處理,通??梢圆捎孟旅嫒N辦法捕捉到back事件:
1)重寫onKeyDown或者onKeyUp方法
2)重寫onBackPressed方法
3)重寫dispatchKeyEvent方法
這三種辦法有什么區(qū)別在這里不進行闡述,有興趣的朋友可以查閱相關資料。
然而在有dialog彈出時,想捕捉back鍵的事件的話,上述三種辦法都無法實現(xiàn)。因為上述方法是重寫在activity里面的,也就是說當activity是當前焦點時,它可以捕捉到相應的back鍵事件,而有dialog彈出時,dialog獲取了當前焦點,所以activity里面的方法無法獲取到back鍵事件,此時有兩種思路:
1)設置dialog的setOnCancelListener監(jiān)聽:
selectDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
// Toast.makeText(getBaseContext(), "點擊了back", Toast.LENGTH_SHORT).show();
}
});
這樣就可以捕捉到back鍵的事件了,當按下back鍵時,系統(tǒng)默認的操作會讓dialog cancel掉,此時會觸發(fā)OnCancelListener,然后在onCancel方法里面就可以實現(xiàn)自己想要實現(xiàn)的操作了。
2)設置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(), "點擊了back", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.dispatchKeyEvent(event);
}
然后在dispatchKeyEvent里面就可以實現(xiàn)自己想要實現(xiàn)的操作了。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android 全局Dialog的簡單實現(xiàn)方法
- Android使用Dialog風格彈出框的Activity
- Android實現(xiàn)從底部彈出的Dialog示例(一)
- Android 中從屏幕左下角彈出Dialog動畫效果的實現(xiàn)代碼
- Android中自定義的dialog中的EditText無法彈出輸入法解決方案
- Android 仿蘋果底部彈出Dialog
- Android 從底部彈出Dialog(橫向滿屏)的實例代碼
- Android解決dialog彈出時無法捕捉Activity的back事件的方法
- Android自定義彈出框dialog效果
- Android 8.0如何完美適配全局dialog懸浮窗彈出
相關文章
Android開發(fā)之OkHttpUtils的具體使用方法
這篇文章主要介紹了Android開發(fā)之OkHttpUtils的具體使用方法,非常具有實用價值,需要的朋友可以參考下2017-08-08
Android Studio 升級到3.0后輸入法中文狀態(tài)下無法選詞的終極解決方案
這篇文章主要介紹了 AndroidStudio 升級到3.0后輸入法中文狀態(tài)下無法選詞的解決方案,需要的朋友可以參考下2017-11-11
Android實現(xiàn)語音數(shù)據(jù)實時采集、播放
這篇文章主要介紹了android實現(xiàn)語音數(shù)據(jù)實時采集、播放的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12

