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

首頁(yè) > 系統(tǒng) > Android > 正文

Android 解決dialog彈出時(shí)無法捕捉Activity的back事件問題

2019-12-12 04:30:08
字體:
供稿:網(wǎng)友

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ì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大冶市| 东安县| 涟水县| 湖南省| 手机| 华宁县| 定西市| 铁岭县| 报价| 镇远县| 贵定县| 红原县| 齐河县| 安多县| 英山县| 东光县| 南丹县| 通化县| 东台市| 西乌珠穆沁旗| 晋州市| 青龙| 进贤县| 班玛县| 喀喇沁旗| 安乡县| 铁岭市| 青神县| 灌南县| 新余市| 天镇县| 雅安市| 南郑县| 惠东县| 兰州市| 保德县| 奎屯市| 麻城市| 利辛县| 宁德市| 旺苍县|