我在 Activity 导航方面遇到问题,无法弄清楚自己在做什么错。

我有一个MainActivitySettingsActivity,但是使用BackUp(在操作栏上)从“设置 Activity ”中有两个不同的结果。

例如,如果按“后退”按钮,则会在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时,我的主 Activity 被破坏并重新创建,这意味着我失去了所有 View 状态,但是按下“后退”按钮并没有做到这一点。

我不确定这是否是我启动PreferenceActivity的方式:
Intent intent = new Intent(this, SettingsActivity.class);
            startActivity(intent);
            return true;

或如何配置AndroidManifest.xml中的 Intent :
<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>

这可能是造成此问题的原因,或者这仅仅是我需要覆盖的正确行为,如果是,那么覆盖的“正确”方法是什么?

最佳答案

去掉



从 list 文件中获取SettingsActivity。

编辑:上面的步骤不再是必需的。

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

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

10-05 23:59