后退和向上导航有不同的结果

时间:2013-05-20 20:02:06

标签: android android-activity android-actionbar android-manifest android-lifecycle

我遇到了活动导航的问题,我无法弄清楚我做错了什么。

我有一个MainActivity和一个SettingsActivity但是使用BackUp(在操作栏上)有两个不同的设置活动结果。

例如,如果按下“返回”按钮,我会在MainActivity中获得以下生命周期回调:

V/lifeCycle: onOptionsItemSelected
V/lifeCycle: onPause
V/lifeCycle: onSaveInstanceState-Bundle[..]
V/lifeCycle: onStop
<< PRESS BACK BUTTON >>
V/lifeCycle: onRestart
V/lifeCycle: onStart
V/lifeCycle: onResume
V/lifeCycle: onPostResume

如果按下导航向上按钮,我会得到以下结果:

V/lifeCycle: onOptionsItemSelected
V/lifeCycle: onPause
V/lifeCycle: onSaveInstanceState-Bundle[..]
V/lifeCycle: onStop
<< PRESS NAV UP >>
V/lifeCycle: onDestroy // Problem
V/lifeCycle: onCreate  // Seems
V/lifeCycle: onStart   // Here
V/lifeCycle: onResume
V/lifeCycle: onPostResume

问题是,当我按下Nav UP我的主要活动被销毁并重新创建意味着我放松了所有视图状态,但按下后退按钮不会这样做。

我不确定这是我如何开始PreferenceActivity

Intent intent = new Intent(this, SettingsActivity.class);
            startActivity(intent);
            return true;

或者AndroidManifest.xml中我的意图是如何配置的:

<activity
    android:name=".MainActivity"
    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=".SettingsActivity"
    android:label="@string/title_activity_settings"
    android:parentActivityName=".MainActivity">
    <intent-filter>
        <category android:name="android.intent.category.PREFERENCE" />
    </intent-filter>
</activity>

这可能导致问题,或者这只是我需要覆盖的正确行为,如果是,那么“覆盖”的“正确”方法是什么?

1 个答案:

答案 0 :(得分:10)

删除

  

机器人:parentActivityName = “MainActivity”

来自 SettingsActivity 的清单文件中的

编辑:上一步不再需要。

在您的SettingsActivity类中,执行以下操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId())
    {
        case android.R.id.home:
            this.finish();
            return (true);
    }
    return super.onOptionsItemSelected(item);
}