Android 后退和导航有不同的结果

Android 后退和导航有不同的结果,android,android-activity,android-actionbar,android-manifest,android-lifecycle,Android,Android Activity,Android Actionbar,Android Manifest,Android Lifecycle,我在活动导航方面遇到了问题,我无法找出我做错了什么 我有一个main活动和一个设置活动,但是使用后退和向上(在操作栏上)与设置活动有两个不同的结果 例如,如果我按下后退按钮,我将在main活动中得到以下生命周期回调: V/lifeCycle: onOptionsItemSelected V/lifeCycle: onPause V/lifeCycle: onSaveInstanceState-Bundle[..] V/lifeCycle: onStop << PRESS BACK B

我在活动导航方面遇到了问题,我无法找出我做错了什么

我有一个
main活动
和一个
设置活动
,但是使用
后退
向上
(在操作栏上)与设置活动有两个不同的结果

例如,如果我按下后退按钮,我将在
main活动中得到以下生命周期回调:

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
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>

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

删除

android:parentActivityName=“.MainActivity”

从清单文件中获取设置活动。

编辑:不再需要上述步骤

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

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

太棒了,
android.R.id.home
是我找不到的金块。但是,我将
android:parentActivityName=“.MainActivity”
保留在中,因为删除它会同时删除操作栏按钮。但是现在,我要做同样的事情。通过G+我被引导到
NavUtils
和指南,这对我的理解非常有帮助。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId())
    {
        case android.R.id.home:
            this.finish();
            return (true);
    }
    return super.onOptionsItemSelected(item);
}