有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java NavUtils navigateUpFromSameTask()和onSaveInstanceState()

我是安卓开发的新手,我面临着一个问题。 我有一个活动,它包含一个列表片段。点击列表项后,新活动开始。我决定用菜单栏上的Home按钮在儿童活动中进行反向导航

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

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

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

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

但是,当我点击子活动的返回箭头并调用父活动的onCreate方法时,参数Bundle似乎为null,直到下面代码的日志为止

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
        安卓:name=".ListItemActivity"
        安卓:label="@string/app_name" >
        <meta-data 安卓:name="安卓.support.PARENT_ACTIVITY"
            安卓:value=".MyListActivity"/>
    </activity>

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

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

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

    </activity>

共 (0) 个答案