国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android解決dialog彈出時無法捕捉Activity的back事件的方法

2020-04-11 11:32:21
字體:
來源:轉載
供稿:網友

本文實例講述了Android解決dialog彈出時無法捕捉Activity的back事件的方法。分享給大家供大家參考。具體分析如下:

在一些情況下,我們需要捕捉back鍵事件,然后在捕捉到的事件里寫入我們需要進行的處理,通常可以采用下面三種辦法捕捉到back事件:

1)重寫onKeyDown或者onKeyUp方法

2)重寫onBackPressed方法

3)重寫dispatchKeyEvent方法

這三種辦法有什么區別在這里不進行闡述,有興趣的朋友可以查閱相關資料。

然而在有dialog彈出時,想捕捉back鍵的事件的話,上述三種辦法都無法實現。因為上述方法是重寫在activity里面的,也就是說當activity是當前焦點時,它可以捕捉到相應的back鍵事件,而有dialog彈出時,dialog獲取了當前焦點,所以activity里面的方法無法獲取到back鍵事件,此時有兩種思路:

1)設置dialog的setOnCancelListener監聽:

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鍵時,系統默認的操作會讓dialog cancel掉,此時會觸發OnCancelListener,然后在onCancel方法里面就可以實現自己想要實現的操作了。

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里面就可以實現自己想要實現的操作了。

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 视频| 牙克石市| 元氏县| 阳朔县| 张家界市| 龙岩市| 边坝县| 昌江| 房产| 成安县| 绥化市| 农安县| 辛集市| 新乐市| 曲沃县| 巩留县| 兖州市| 绥滨县| 个旧市| 昌图县| 威远县| 于田县| 巩义市| 长顺县| 武清区| 鸡西市| 读书| 麟游县| 股票| 基隆市| 凤庆县| 苗栗市| 安平县| 喀喇沁旗| 晋城| 桃园县| 尚志市| 白朗县| 嫩江县| 贵溪市| 毕节市|