2013-10-14 88 views
2

我試圖創建一個Fragment,它在顯示回來之後保留其狀態。如何以及在哪裏使用setInitialSavedState&saveFragmentInstanceState裏面片段

爲此,我嘗試使用getFragmentManager().saveFragmentInstanceState()裏面的onPause() &然後在onCreateView()內調用setInitialSavedState()

我面對的問題是我不知道如何準確地使用它們以及何時調用它們。

此外這兩個函數都需要參數SavedState,我不知道如何使用。

代碼:

public class AudioContainerFragmentClass extends Fragment implements 
     OnClickListener { 

    final String TAG = "AudioContainerFragmentClass"; 
    private Button bSetName; 
    private TextView tvName; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = null; 
     try { 
      Log.e(TAG, "onCreateView()"); 
      view = inflater.inflate(R.layout.audio_fragment_container, null); 
      bSetName = (Button) view.findViewById(R.id.bSetName); 
      tvName = (TextView) view.findViewById(R.id.tvName); 
      bSetName.setOnClickListener(this); 

      if(savedInstanceState != null){ 
       setInitialSavedState(/* WHICH SavedState OBJECT TO PASS */); 
      } 
      Log.e(TAG, "onCreate()"); 

     } catch (Exception e) { 
      Log.e(TAG, "onCreateView(): " + e.toString()); 
     } 
     return view; 
    } 

    /* 
    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     Log.e(TAG, "onSaveInstanceState()"); 
     super.onSaveInstanceState(outState); 
    } 
    */ 

    @Override 
    public void onClick(View v) { 
     tvName.setText("sometext"); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     getFragmentManager().saveFragmentInstanceState(/* WHAT TO ADD HERE */); 

    } 

} 

回答

6

就在這個調查我自己,我想我會記錄我發現了什麼。

setInitialSavedState()可以如Android源代碼around line 491指出不能之後Fragment已被附接到一個Activity調用。

setInitialSavedState()旨在在代碼中實例化片段之後立即使用。例如:

AudioContainerFragmentClass newFrag = new AudioContainerFragmentClass(); 
newFrag.setInitialSavedstate(savedStateObject); 
相關問題