私は基本的にレイアウトを2つに分けています。左側には、右側のレイアウトに表示されるさまざまなフラグメントをトリガーするボタンがあります。
各ボタンをクリックすると、それぞれのフラグメントがフラグメント表示領域にロードされます。Fragment A や Fragment D などの一部のフラグメントは、データベースにクエリを実行したり、インターネットからデータを取得したりして、複雑なデータを表示します。アプリが実行されている限り、このデータは読み込まれると変更されません。私の質問は、フラグメントを以前の状態に戻して表示できるかどうかです。より明確にするために->フラグメントAボタンをクリックすると、フラグメントAクラスですべての計算が実行されて表示されます。次にフラグメントBをクリックすると、フラグメントBが表示され、次にCが表示されます。フラグメントAボタンをもう一度クリックすると、計算/接続/データベースクエリをやり直すのではなく、データをロードバックする必要があります。
使用されているコード:
public void onClick(View v) {
switch (position) {
case 0:
newContent = new FragmentA();
break;
case 1:
newContent = new FragmentB();
break;
case 2:
newContent = new FragmentC();
break;
case 3:
newContent = new FragmentD();
break;
case 4:
newContent = new FragmentE();
break;
default: break;
}
if (newContent != null){
mContent = newContent;
switchFragment(newContent);
}
}
public void switchFragment(Fragment fragment) {
mContent = fragment;
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.replacelayout, fragment)
.commit();
}
フラグメントコードの例
public class FragmentA extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragmenta, container, false);
}
@Override
public void onActivityCreated (Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
RUN ASYNTASKS TO CONNECT/QUERYDB AND DIPLAY THE DATA
}
}
やり方がわからない - backStack を使う?? onResume() ?? .replace が呼び出されたときにどの関数が呼び出されるかわからないためです。
前もって感謝します