フラグメントがアンドロイドフレームワークによってどのように管理されているかを調べようとしています。私の研究を通して、私は断片についてはわからなかったたくさんの新しいことを知るようになりましたが、起こっている。フラグメントはビューの状態をどのように復元していますか?
私のシナリオを最初に理解してください。それは次のようになります: 2つのフラグメントを1つずつ追加するアクティビティが1つあります。活性は最初にロードされたときにフラグメントAは、コードの下に使用してそれに接続されている:
private void initFirstFragment(){
Bundle bundle = new Bundle();
bundle.putString("TEXT_TO_SHOW", "FIRST ACTIVITY\nFIRST DUMMY FRAGMENT");
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frameLayoutFragmentContainer, FirstDummyFragment.newInstance(bundle), FirstDummyFragment.class.getSimpleName());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
それは
FirstDummyFragmentロードされるときにフラグメントAのこれらのコールバックメソッドが呼び出される:のonCreate:savedInstanceState --->をヌル
FirstDummyFragment:onCreateView:savedInstanceState --->ヌル
FirstDummyFragment:onResume
フラグメントAでは、編集テキストがあり、テキストを入力します。
ボタンは、次に断片Bは、コードの下に使用して同じ容器に添加されるアクティビティの内部をクリックする:コールバックメソッドの下
public void openSecondFragment() {
Bundle bundle = new Bundle();
bundle.putString("TEXT_TO_SHOW", "FIRST ACTIVITY\nSECOND DUMMY FRAGMENT");
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frameLayoutFragmentContainer, SecondDummyFragment.newInstance(bundle), SecondDummyFragment.class.getSimpleName());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
はフラグメントB
SecondDummyFragmentを添加した後に呼び出される:のonCreate。 savedInstanceState ---> null
FirstDummyFragment:onDestroyView
SecondDummyFragment:onCreateView
SecondDummyFragment:onResume
私は戻るボタンを押し
、断片Bは破壊され、フラグメントAはSecondDummyFragmentと呼ばれ、フォアグラウンドにし、コールバックメソッドの下に来る:onDestroyView
SecondDummyFragment:onDestroy
SecondDum myFragment:onDetach
FirstDummyFragment:onCreateView:savedInstanceState --->ヌル
FirstDummyFragment:onResume
とフラグメントAのエディットテキストは、以前のフラグメントBを追加する前に、私はそれに入力したのと同じテキストが含まれています私は、Fragment Aが再び作成されたときに、savedInstanceStateがnullで、onCreateViewが全く新しいViewオブジェクトを返しても、Fragment Aのビューステートを復元する方法を混乱させます。
これはあなたを助けるはずです。 https://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack – akash93
@ akash93私の質問には関係ありません。 – Vikalp