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

首頁 > 網站 > 建站經驗 > 正文

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

2019-11-02 14:53:25
字體:
來源:轉載
供稿:網友

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

  在一些情況下,我們需要捕捉back鍵事件,然后在捕捉到的事件里寫入我們需要進行的處理,通??梢圆捎孟旅嫒N辦法捕捉到back事件:

  1)重寫onKeyDown或者onKeyUp方法

  2)重寫onBackPressed方法

  3)重寫dispatchKeyEven

小清新網名[www.la240.com/html2017/1/34/]
t方法

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

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

  1)設置dialog的setOnCancelListener監聽:

  ?

1 2 3 4 5 6 7 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方法

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄢陵县| 东阿县| 吴旗县| 嘉义县| 北碚区| 思南县| 临海市| 襄城县| 南溪县| 洪湖市| 东明县| 谢通门县| 宁国市| 南郑县| 玉龙| 靖江市| 岐山县| 郸城县| 通道| 灵璧县| 浑源县| 襄樊市| 唐山市| 许昌市| 新巴尔虎左旗| 阜宁县| 苍南县| 新乐市| 孟连| 盐山县| 武功县| 固原市| 鄂尔多斯市| 莎车县| 汪清县| 瓦房店市| 沙田区| 祁门县| 壶关县| 宝兴县| 富源县|