2016-10-28 29 views
-2

我想在SavedInstanceState中传递多个值。这可以做到吗?如何在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

明显的原因:'KEY_INDEX.equals(SAVED_ANSWER)&& SAVED_ANSWER.equals(SAVED_VALUE)'...或者你认为'onSaveInstanceState'用于保存(这是真的......但是它只被系统用于某些原因)... – Selvin

+0

KEY_INDEX,SAVED_ANSWER,SAVED_VALUE的值是什么? –

回答

0

一个Bundle是类似于一个HashMap<String, Object>。所以,你可以在其中放入多个值。

最有可能的,或者:

  • 你的测试是有缺陷的(例如,你是不是测试场景,其中savedInstanceStatenull等领域有其默认值),或

  • 您的密钥是相同的,所以您只在Bundle

    中存储一个网络项目
  • 当您将它们放入时,所有值都发生相同

你可以把断点onCreate()onSaveInstanceState()并检查您在这两个地方的工作Bundle