一般,我们对于activity和fragment都是在松开手时才对其进行销毁,所以一般代码是这么写的:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
// do something
return true;
}
return super.onKeyDown(keyCode, event);
}
我们知道,对于上面的代码,如果当前是activity,按下返回键后当前activity不会退出,会等到松开手时,activity才会退出销毁,没有问题。
但是当我们当前界面是fragment时,按下返回键后,我们发现界面立刻返回到了上面一个fragment(假如前面一个界面也是fragment),为什么没有在松开手的时候才退出fragment呢?
突然又想到了一个处理返回键的方法,那就是onBackPressed(),那么这个方法可以吗?
@Override
public void onBackPressed() {
// do something
}
很遗憾的告诉你,居然是可行的,它会在松开手的时候才销毁fragment,不会在按下时就退出fragment !居然这么神奇,同样都是处理返回键按下的事情呀!?
或者是这样,我们不是要松开手才销毁Fragment吗?那我们重写返回键松手操作就可以了呀!
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { return true; } super.onKeyUp(keyCode, event); }
好了,就是这样滴。