Java 什么';下面的代码怎么了?

Java 什么';下面的代码怎么了?,java,android,android-fragments,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, fragmen

我从《大书呆子农场》这本书中学到了东西

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)


提前谢谢。

我通常这样做:

CrimeFragment fragment = new CrimeFragment();

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(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");
}

“不起作用”是什么意思?缺少铸造<代码>CrimeFragment片段=(CrimeFragment)fm.findFragmentById(R.id.fragmentContainer)那么这回答了你的问题吗?谢谢,我认为导入android.support.v4.app.Fragment之间存在差异;导入android.app.Fragment;这不仅仅是演员的问题。
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");
}