我想在操作栏的右侧添加后退按钮,我找到了许多链接。
这是我的代码,即app-> res-> menu-> main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/backAction"
android:icon="@drawable/ic_launcher"
android:title="back"
android:showAsAction="always"/>
</menu>
Optionmenuactivity.java
Oncreate事件:
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
onoptionItemselected()
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.backAction:
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
清单文件:
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app.MainActivity" />
此代码出现问题:
活动流程是:(主要)活动1 - >活动2 - &gt;活动3 - &gt;活动4
在Activity4之后,如果我们按下后退按钮,它应该继续使用Activity3,但是使用此代码它会进入Mainactivity,即Activity1
请帮帮我..谢谢你
答案 0 :(得分:1)
这里有很多问题。
首先,我建议您了解Back和Up之间的区别
Up navigation explained with examples Back navigation explained with examples
其次,理解你的代码中发生的事情并不容易,但据我所知,你还没有在manifest.xml中声明父元素。
这是一个很好而简单的例子:
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
父活动定义可以让您的生活更加轻松。这样,您就可以定义将在UP NAVIGATION交互中加载哪个活动。
希望有所帮助:)
答案 1 :(得分:0)
首先,我想说你要做的不是一个好习惯,如果Android设备已经在屏幕底部有一个你可以打开,你为什么要在你的操作栏中有一个后退按钮? Action Bar左侧的向上导航?
自定义应用程序导航会使您的代码混乱,使用户感到困惑,而且大部分时间都很难看。
但是如果你真的需要一个导航按钮,你希望它能够访问标准的android导航方法。
用于反向导航:
只需使用标准的android后退动作onBackPressed()。
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.backAction:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
如果此功能没有达到您想要的效果,您可以使用自己想要的行为覆盖它。
用于向上导航:
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.backAction:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您必须在清单中配置您的父级活动,但由于这一点,此导航的行为更容易更改。