覆盖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中顶部菜单问题的后退按钮事件的主要内容,如果未能解决你的问题,请参考以下文章
按下后退按钮时未调用Android onUserLeaveHint()