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

Posted

技术标签:

【中文标题】覆盖Android中顶部菜单问题的后退按钮事件【英文标题】:Override back button event of top menu issue in Android 【发布时间】:2016-03-02 21:52:03 【问题描述】:

我想从当前活动回到之前的活动。

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

 @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】:

覆盖Activity 中的onOptionsItemSelected() 方法:

@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;

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

FLAG_ACTIVITY_CLEAR_TASK 标志完成所有旧活动。

【讨论】:

是的...它适用于底部的后退按钮。但我要的是默认创建的 TOP 后退箭头按钮... 嗯...我没有创建它。它是由 Android Studio 默认创建的。所以我不知道如何获得对这个按钮的引用。

以上是关于覆盖Android中顶部菜单问题的后退按钮事件的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中的设备后退按钮覆盖

侧边菜单覆盖特定情况的后退按钮

如何覆盖android中的操作栏后退按钮?

按下后退按钮时未调用Android onUserLeaveHint()

Android - 如何覆盖“后退”按钮,使其不会完成()我的活动?

android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)