4

フラグメントクラスで複数のタブを使用しました。フラグメントの状態を保存できませんでした。onSaveInstanceState()メソッドを使用して、パラメーターを保存しました。しかし、このフラグメントに戻ると、保存された状態は常に「null」を示しています。これに関するすべての質問と回答を試しましたが、それでも同じ問題に直面しています。誰かが私がこれを解決するのを手伝ってくれませんか。

マイコード

 @Override
 public void onCreate(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
   super.onCreate(savedInstanceState);
   setRetainInstance(true);
   super.onCreate(savedInstanceState);
   Log.d("savedInstanceStateInfo1", "" + savedInstanceState);
   if (null != savedInstanceState) {
    nAndroids = savedInstanceState.getInt("nAndroids");
    Log.d("NANDROIDS", "" + nAndroids);
   }
  }
  // Log.d("State in oncreate : ",""+savedInstanceState);

 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);
  setRetainInstance(true);
  Log.d("SavedinstanestateInfo", "" + savedInstanceState);
 }

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  if (container == null) {
   return null;
  }
  // final ActionBar ab=getActivity().getSupportActionBar();

  View v = (LinearLayout) inflater.inflate(R.layout.infotab, container, false);
  Log.d("SavedinstanestateInfo", "" + savedInstanceState);
  return v;
 }
 @Override
 public void onSaveInstanceState(Bundle outState) {
  outState.putInt("nAndroids", nAndroids);

  super.onSaveInstanceState(outState);
 }
4

1 に答える 1

6

1)どうやら、setRetainInstance(true)を使用している場合、onRestoreInstanceStateのバンドルはnullです。

https://stackoverflow.com/a/8488107/1011746

2)必須ではありませんが、outStateに変更を加える前に、super.onSaveInstanceState(outState)を呼び出すのがより一般的です。onRestoreInstanceState(Bundle outState)のsuper.onRestoreInstanceState(outState)についても同じです。

于 2012-10-28T20:00:48.977 に答える