NavUtils navigateUpFromSameTask()和onSaveInstanceState()

时间:2015-10-25 17:17:25

标签: java android

我是Android开发的新手,我遇到了一个问题。 我有一个包含ListFragment的活动。点击列表项后,新的活动开始。我决定使用菜单栏上的“主页”按钮在子活动中进行后退导航。

if (NavUtils.getParentActivityName(getActivity()) != null){
        ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

...

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            if (NavUtils.getParentActivityName(getActivity()) != null){
                NavUtils.navigateUpFromSameTask(getActivity());
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

我还需要将整数值保存到父Activity中。所以我重写了onSaveInstanceState()

@Override
protected void onSaveInstanceState(Bundle savedInstanceState){
    super.onSaveInstanceState(savedInstanceState);
    Log.d("ACTIVITY_STATE", " onSave");
    savedInstanceState.putInt(TAG_INT_VAL_SAVED, intVal);
}

但是当我点击子Activity的后退箭头并调用父Activity的onCreate方法时,看起来参数Bundle为null,直到以下代码的Log ...

if (savedInstanceState != null){
        intVal = savedInstanceState.getInt(TAG_INT_VAL_SAVED);
        Log.d("ACTIVITY_STATE", " onSave getting data"); // Never appears at LogCat
    } else {
        // code to assign intVal as if the Activity was just started
    }

我有点困惑,所以我想问你们,伙计们,求助。当导航发生时,你能告诉我,发生了什么事吗?我应该怎么做才能保持intVal?谢谢!

B.t.w。它在屏幕旋转时工作正常 - 成功检索到该值。

清单看起来像:

<activity
        android:name=".ListItemActivity"
        android:label="@string/app_name" >
        <meta-data android:name="android.support.PARENT_ACTIVITY"
            android:value=".MyListActivity"/>
    </activity>

    <activity android:name=".MyListActivity"
        android:label="@string/app_name">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

0 个答案:

没有答案