0

私は大オタク牧場の本から学んでいます。

FragmentManager fm = getFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if (fragment == null) {
    fragment = new CrimeFragment();
    fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}

型の不一致エラーが発生しました。でも、電話したら

CrimeFragment フラグメント = fm.findFragmentById(R.id.fragmentContainer);

効果がないでしょう。私の質問は、レイアウトのIDを使用してCustomFragment(CrimeFragment)を呼び出す方法ですか?

前もって感謝します。

4

1 に答える 1

2

私は通常、次のようにします。

CrimeFragment fragment = new CrimeFragment();

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, fragment).commit();

また

transaction.add(R.id.fragmentContainer, fragment).commit();

詳しくは:

onCreate メソッドで作成されている場合、画面の向きの変更によりフラグメントがもう一度更新されます。ここでこれを防ぐことができます:

if (savedInstanceState == null){
  CrimeFragment fragment = new CrimeFragment();
  FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
  transaction.replace(R.id.fragmentContainer, fragment, "fragment").commit();
}else{
  CrimeFragment homeFragment = (CrimeFragment) getSupportFragmentManager().findFragmentByTag("fragment");
}
于 2013-05-23T03:23:16.483 に答える