后退按钮在操作栏右侧无法正常工作

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);
    }

 }

您必须在清单中配置您的父活动,但正因为如此,此导航的行为更容易更改。