读书人

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

发布时间: 2012-07-29 15:26:14 作者: rapoo

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

读书人网 >移动开发

热点推荐