首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

什么时候调用Dialog的dismiss()步骤

2012-07-29 
什么时候调用Dialog的dismiss()方法调用Dialog的dismiss()方法的方式:1. 重写Dialog的onKeyDown()方法里进

什么时候调用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; }
?

热点排行