マイコード:これは、プログラムによってフラグメントを呼び出す正しい方法ですか?
public class MainActivity extends AppCompatActivity {
private FragmentA fragmentA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
fragmentA = FragmentA.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_a_container, fragmentA, "FRAGMENT_A");
fragmentTransaction.commit();
}
else {
fragmentA = (FragmentA) getSupportFragmentManager().findFragmentByTag("FRAGMENT_A");
}
}
}
私は本当に私がやっているかわからないが、これは私が何をすべきか、現在あります。私はFragmentのコンテナを定義し、FragmentTransactionを使用してそれをFragmentに置き換えます。私が混乱している部分はelse文です。
これを別の方法で構成する必要がありますか?
私は設定変更がアクティビティとフラグメントを一掃したと思ったのですが、一部のサポートマネージャでフラグメントをチェックするのはなぜですか?これは断片が実際に破壊されないことを意味しますか?同時に、私は
onSaveInstanceState
またはアプローチを使用しない限り、リセットされているように見えるので、破壊されているようです。
編集:これを行うと間違って何:
public class MainActivity extends AppCompatActivity {
private FragmentA fragmentA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentA = FragmentA.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_a_container, fragmentA, "FRAGMENT_A");
fragmentTransaction.commit();
}
}
まだ分かりません。 'fragmentA =(FragmentA)getSupportFragmentManager()。findFragmentByTag(" FRAGMENT_A ");'正しいですか?またはこれを削除して、常に最初のコードブロックにあるコードを呼び出すことはできますか? (トランザクションコード) – KaliMa
以前に作成したフラグメントを取得する方法であるため、これを保持する必要があります。 「FRAGMENT_A」タグは、あなたのフラグメントをマネージャーと識別するタグです。 –
しかし、画面を回転してアクティビティーとフラグメントを破壊すると、フラグメントが「fragmentA」メンバーと再関連付けできるところで、どのように「存在」することができますか? – KaliMa