【问题标题】:Override back button event of top menu issue in Android覆盖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);
    }

但它根本不会触发。

我错过了什么?

【问题讨论】:

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


    【解决方案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 默认创建的。所以我不知道如何获得对这个按钮的引用。
    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多