下面的代码有什么问题?

时间:2013-05-23 03:16:25

标签: java android android-fragments

我正从大书呆子牧场的书中学习。

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 fragment = fm.findFragmentById(R.id.fragmentContainer);

它不起作用。所以我的问题是如何使用布局中的id调用CustomFragment(CrimeFragment)?

提前致谢。

1 个答案:

答案 0 :(得分: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");
}