我正从大书呆子牧场的书中学习。
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)?
提前致谢。
答案 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");
}