我有这种观点的层次结构: 活动 - > ViewPager - > MyViewGroup
在MyViewGroup中(仅在那里)我重写onKeyUp事件:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.i(TAG, "Back");
return true;
} else {
return super.onKeyUp(keyCode, event);
}
}
但是当我按下“后退”键时,不会调用此覆盖并关闭应用程序。为什么?
答案 0 :(得分:2)
默认情况下,后退按钮完成活动。来自android源码:
当活动检测到用户按下后退键时调用。默认实现只是完成当前活动,但您可以覆盖它以执行任何操作。
public void onBackPressed() {
if (!mFragments.popBackStackImmediate()) {
finish();
}
}
如果您希望更改此行为,则必须覆盖Activity中的onBackPressed并使其不能调用super。然后你可以实现自己的行为。
public @Override void onBackPressed()
{
if (doSomeThingOnBackPressed) {
// do some stuff
return;
}
super.onBackPressed();
}