`
handsomeliuyang
  • 浏览: 311900 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

什么时候调用Dialog的dismiss()方法

 
阅读更多

调用Dialog的dismiss()方法的方式:

1. 重写Dialog的onKeyDown()方法里进行调用:

 

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.d(Constant.TAG,"dialog onKeyDown");
        if(keyCode == KeyEvent.KEYCODE_BACK) {
            dismissOut();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

 

 会出现的问题:如果用一直按住Back键,则会一直调用dismissOut方法,会让退出动画不停的执行。

2. 重写Dialog的onKeyUp()方法里进行调用:

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        Log.d(Constant.TAG,"dialog onKeyDown");
        if(keyCode == KeyEvent.KEYCODE_BACK) {
            dismissOut();
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }

 会出现的问题:用户按下Back键,退出的Dialog出来,用户松开Back键,退出的Dialog就会马上消失

3. 重写Dialog的onBackPressed()方法里进行调用:

@Override
    public void onBackPressed() {
    	Log.d(Constant.TAG,"dialog onKeyDown");
        dismissOut();
    }

 这样就没有问题了。

 

其实onBackPressed()方法也是在onKeyUp方法里进行调用的,只是做了判断,代码如下:

public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                && !event.isCanceled()) {
            onBackPressed();
            return true;
        }
        return false;
 }
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics