Android解決dialog彈出時(shí)無(wú)法捕捉Activity的back事件的方法
本文實(shí)例講述了Android解決dialog彈出時(shí)無(wú)法捕捉Activity的back事件的方法。分享給大家供大家參考。具體分析如下:
在一些情況下,我們需要捕捉back鍵事件,然后在捕捉到的事件里寫(xiě)入我們需要進(jìn)行的處理,通??梢圆捎孟旅嫒N辦法捕捉到back事件:
1)重寫(xiě)onKeyDown或者onKeyUp方法
2)重寫(xiě)onBackPressed方法
3)重寫(xiě)dispatchKeyEvent方法
這三種辦法有什么區(qū)別在這里不進(jìn)行闡述,有興趣的朋友可以查閱相關(guān)資料。
然而在有dialog彈出時(shí),想捕捉back鍵的事件的話,上述三種辦法都無(wú)法實(shí)現(xiàn)。因?yàn)樯鲜龇椒ㄊ侵貙?xiě)在activity里面的,也就是說(shuō)當(dāng)activity是當(dāng)前焦點(diǎn)時(shí),它可以捕捉到相應(yīng)的back鍵事件,而有dialog彈出時(shí),dialog獲取了當(dāng)前焦點(diǎn),所以activity里面的方法無(wú)法獲取到back鍵事件,此時(shí)有兩種思路:
1)設(shè)置dialog的setOnCancelListener監(jiān)聽(tīng):
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并重寫(xiě)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程序設(shè)計(jì)有所幫助。
- Android 全局Dialog的簡(jiǎn)單實(shí)現(xiàn)方法
- Android使用Dialog風(fēng)格彈出框的Activity
- Android實(shí)現(xiàn)從底部彈出的Dialog示例(一)
- Android 中從屏幕左下角彈出Dialog動(dòng)畫(huà)效果的實(shí)現(xiàn)代碼
- Android中自定義的dialog中的EditText無(wú)法彈出輸入法解決方案
- Android 仿蘋(píng)果底部彈出Dialog
- Android 從底部彈出Dialog(橫向滿(mǎn)屏)的實(shí)例代碼
- Android自定義彈出框dialog效果
- Android 解決dialog彈出時(shí)無(wú)法捕捉Activity的back事件問(wèn)題
- Android 8.0如何完美適配全局dialog懸浮窗彈出
相關(guān)文章
Android入門(mén)之使用OKHttp組件訪問(wèn)網(wǎng)絡(luò)資源
這篇文章主要為大家詳細(xì)介紹了Android如何使用OKHttp組件訪問(wèn)網(wǎng)絡(luò)資源功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12
Android獲取手機(jī)聯(lián)系人電話號(hào)碼并返回結(jié)果
這篇文章主要為大家詳細(xì)介紹了Android獲取手機(jī)聯(lián)系人電話號(hào)碼并返回結(jié)果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android WebView實(shí)現(xiàn)文件下載功能
這篇文章主要為大家詳細(xì)介紹了Android WebView實(shí)現(xiàn)文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android Java實(shí)現(xiàn)余弦匹配算法示例代碼
這篇文章主要介紹了Android Java實(shí)現(xiàn)余弦匹配算法示例代碼的相關(guān)資料,這里通過(guò)java 算法實(shí)現(xiàn)余弦匹配算法實(shí)現(xiàn)比較的實(shí)例,需要的朋友可以參考下2016-11-11
Android 中View.onDraw(Canvas canvas)的使用方法
這篇文章主要介紹了Android 中View.onDraw(Canvas canvas)的使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
gradle tool升級(jí)到3.0注意事項(xiàng)小結(jié)
這篇文章主要介紹了gradle tool升級(jí)到3.0注意事項(xiàng)及修改相關(guān)文件介紹,需要的朋友可以參考下2018-02-02
解析在Android中為T(mén)extView增加自定義HTML標(biāo)簽的實(shí)現(xiàn)方法
本篇文章是對(duì)在Android中為T(mén)extView增加自定義HTML標(biāo)簽的方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
Android ViewPager實(shí)現(xiàn)動(dòng)畫(huà)切換效果
這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)動(dòng)畫(huà)切換效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

