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

时间:2015-01-30 08:43:26

标签: android android-studio

我想在操作栏的右侧添加后退按钮,我找到了许多链接。

这是我的代码,即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

请帮帮我..谢谢你

2 个答案:

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

 }

您必须在清单中配置您的父级活动,但由于这一点,此导航的行为更容易更改。