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 回答