2016-10-28 70 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