2013-12-23 19 views
0

恢復實例狀態這裏是我的代碼:保存和與片段

@Override 
public void onSaveInstanceState(Bundle savedInstanceStateBundle) 
{ 
    savedInstanceStateBundle.putInt(AVERAGE_SESSION_VALUE_HOLDER, averageSessionSeek.getProgress()); 
    savedInstanceStateBundle.putInt(CONFIDENCE_VALUE_HOLDER, confidenceSeek.getProgress()); 
    savedInstanceStateBundle.putInt(CONVERSION_TIME_VALUE_HOLDER, conersionTimeSeek.getProgress()); 

} 

上面的代碼屬於InputFragment.java延伸Fragment。上述方法保存了實例的狀態,因此當用戶離開特定的Fragment並返回時,實例將被恢復。我試着用下面的代碼

@Override 
public void onRestoreInstanceState(Bundle savedInstanceStateBundle) 
{ 

} 

但它失敗了,編譯錯誤。那麼,如何在Fragments中重新加載實例狀態?

回答

0

片段沒有onRestoreInstanceState ...它是onActivityCreated()(由於技術上的原因,這是由Android團隊以可怕的方式實現的)。

有關更多信息,請參閱StackOverflow上的this thread

0

onSaveInstanceState文檔說這個:

打電話詢問片段保存其當前動態狀態,因此它可以在以後的過程中的一個新實例來重建被重新啓動。如果以後需要創建片段的新實例,則放置在Bundle中的數據將在Bundle中給出,其中包括onCreate(Bundle),onCreateView(LayoutInflater,ViewGroup,Bundle)和onActivityCreated(Bundle)中的

這對應於Activity.onSaveInstanceState(Bundle),其中的大多數討論也適用於此處。

而不是onSaveInstanceState(),使用onActivityCreated(Bundle)。

+0

那麼我應該把恢復代碼放在哪裏? –

+0

in onActivityCreated(Bundle),see http://developer.android.com/reference/android/app/Fragment.html#onActivityCreated(android.os.Bundle) – Melquiades