【问题标题】:Up Button - getSupportActionBar().setDisplayShowHomeEnabled(true) - closes app向上按钮 - getSupportActionBar().setDisplayShowHomeEnabled(true) - 关闭应用程序
【发布时间】:2014-07-01 23:54:11
【问题描述】:

我尝试为我的应用程序制作一个“返回”按钮,或者如 Google 所说,低级活动的向上按钮。

我写的一切都正确: 在我的 XML 中,我放置了元数据和父活动(来自 Google 的示例,我在文件中将文本修改为我的应用程序)

android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />

在我的课上我放了下一行:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

但是当我点击这个向上按钮时,应用程序会关闭,然后从主屏幕再次打开。

我希望它返回主屏幕而不关闭(完成)应用程序。

你能帮帮我吗?谢谢。

【问题讨论】:

  • 你能显示更多代码吗?你在 OnOptionItemSelected() 上做什么?
  • @joao2fast4u 与那件事无关,因为谷歌没有。 developer.android.com/training/basics/actionbar/…
  • 您测试代码的 API 版本是什么?
  • 你能出示 Manifest 文件吗?
  • @joao2fast4u 我正在测试 KitKat (API 19),正如我所说,我在清单上声明了正确的东西。 android:parentActivityName="com.example.myfirstapp.MainActivity" >

标签: android android-activity android-actionbar android-actionbaractivity


【解决方案1】:

嗯,根据this guide

在 Android 4.1(API 级别 16)或更高版本上运行时,或者在使用支持库中的 ActionBarActivity 时,执行向上导航只需要您在清单文件中声明父 Activity 并启用操作栏的向上按钮。

所以,我有两个Activities:FirstActivity,这是我的启动器和父 Activity 和 SecondActivity,这是我的孩子 Activity

我的 FirstActivity 代码:

public class FirstActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_main_activity);

    Button secondButton = (Button) findViewById(R.id.secondButton);

    secondButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(FirstActivity.this, SecondActivity.class));

        }
    });

}

}

我的 SecondActivity 代码:

public class SecondActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_place_activity);

    //enable the ActionBar behaviour
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

我的 Manifest.xml 文件:

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="20" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.testes.activity.FirstActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.testes.activity.SecondActivity"
        android:parentActivityName="com.testes.activity.FirstActivity" >
    </activity>
</application>

</manifest>

这就是我需要让它按照你的方式工作的全部内容。我启动我的FirstActivity,单击我的按钮转到SecondActivity,单击ActionBar 主页按钮,然后返回FirstActivity

【讨论】:

  • 好吧,它没有像你说的那样工作,但我解决了用当前活动(而不是主要活动)的名称调用 parentActivityName 的问题,并且它工作了。很奇怪。
  • 你确定它没有完成应用程序,然后重新启动它?您看不到差异,因为您的 OnCreate 中没有任何方法。
  • 是的,我确定。如果它正在完成应用程序并重新启动它,我会得到我的主屏幕一段时间,然后看到 FirstActivity。它再次调用 FirstActivity onCreate(),但并未完成应用程序。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
相关资源
最近更新 更多