覆盖Android中顶级菜单问题的后退按钮事件

时间:2015-11-29 02:12:28

标签: java android android-activity android-studio back-button

我想回到当前活动的先前活动。

所以我将此代码添加到当前活动

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            //super.onBackPressed();
            //NavUtils.navigateUpFromSameTask(this);
            this.finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

但它根本不会发射。

我缺少什么?

1 个答案:

答案 0 :(得分:1)

覆盖onOptionsItemSelected()中的Activity方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home: // the default resource ID of the actionBar's back button
            Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
            break;
    }

    return true;
}

您使用id获得点击的菜单项item.getItemId(),  然后你检查它是否等于android.R.id.home,即actionBar后退按钮的默认资源ID。

FLAG_ACTIVITY_CLEAR_TASK标志完成所有旧活动。