如何在SavedInstanceState中传递多个值

时间:2016-10-28 15:03:05

标签: android

我正在尝试在SavedInstanceState中传递多个值。可以这样做吗?

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putInt(KEY_INDEX, array_counter);
    savedInstanceState.putInt(SAVED_ANSWER, answer);
    savedInstanceState.putInt(SAVED_VALUE, value);
}

但是在OnCreate中接收它们时它们都具有相同的值:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        array_counter = savedInstanceState.getInt(KEY_INDEX);
        answer = savedInstanceState.getInt(SAVED_ANSWER);
        value = savedInstanceState.getInt(SAVED_VALUE);
    }

1 个答案:

答案 0 :(得分:0)

Bundle类似于HashMap<String, Object>。因此,您可以在其中添加多个值。

最有可能的是:

  • 您的测试存在缺陷(例如,您没有测试savedInstanceState不是null的情况,因此字段具有默认值),或者

  • 您的密钥是相同的,因此您只在Bundle中存储了一个网络项目,或者

  • 当您将这些值放入Bundle

  • 时,所有值都相同

您可以在onCreate()onSaveInstanceState()中放置断点,并检查您在两个地方使用的Bundle