后退按钮在操作栏右侧无法正常工作
Back button is not working properly in Right side of action bar
我只想在操作栏的右侧添加后退按钮,为此我找到了很多 link。
这是我的代码,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
创建事件:
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
onoptionItemsselected()
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" />
此代码有问题:
Activity 流程是:(Main)Activity1-> Activity2 ->Activity3 ->Activity4
在 Activity4 之后,如果我们按下后退按钮,它应该继续 Activity3 但是使用此代码它会进入 Mainactivity,即 Activity1
请帮助我..谢谢
这里有很多问题。
首先推荐你,了解Back和Up的区别
Up navigation explained with examples
Back navigation explained with examples
其次,要理解您的代码中发生的事情并不是很容易,但据我所知,您还没有在 manifest.xml 中声明 parent 元素。
这是一个很好的简单示例:
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
parentactivity定义可以让您的生活变得轻松。通过这种方式,您可以定义将在 UP NAVIGATION 交互中加载的 activity。
希望对您有所帮助:)
首先我想说的是你尝试做的事情不是一个好的做法,如果 Android 设备已经在屏幕,您可以打开操作栏左侧的向上导航吗?
自定义 App-Navigation 会使您的代码混乱,使用户感到困惑,而且大部分时间都很丑陋。
但如果您真的需要一个导航按钮,您希望它访问标准 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);
}
}
您必须在清单中配置您的父活动,但正因为如此,此导航的行为更容易更改。
我只想在操作栏的右侧添加后退按钮,为此我找到了很多 link。
这是我的代码,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
创建事件:
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
onoptionItemsselected()
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" />
此代码有问题:
Activity 流程是:(Main)Activity1-> Activity2 ->Activity3 ->Activity4
在 Activity4 之后,如果我们按下后退按钮,它应该继续 Activity3 但是使用此代码它会进入 Mainactivity,即 Activity1
请帮助我..谢谢
这里有很多问题。
首先推荐你,了解Back和Up的区别
Up navigation explained with examples Back navigation explained with examples
其次,要理解您的代码中发生的事情并不是很容易,但据我所知,您还没有在 manifest.xml 中声明 parent 元素。
这是一个很好的简单示例:
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
parentactivity定义可以让您的生活变得轻松。通过这种方式,您可以定义将在 UP NAVIGATION 交互中加载的 activity。
希望对您有所帮助:)
首先我想说的是你尝试做的事情不是一个好的做法,如果 Android 设备已经在屏幕,您可以打开操作栏左侧的向上导航吗?
自定义 App-Navigation 会使您的代码混乱,使用户感到困惑,而且大部分时间都很丑陋。
但如果您真的需要一个导航按钮,您希望它访问标准 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);
}
}
您必须在清单中配置您的父活动,但正因为如此,此导航的行为更容易更改。