我为什么学习Android片段很麻烦。 在我的应用程序中,我有一个活动有3个片段。一些用户操作后,每个片段都将替换之前的片段。我的主要xml布局是简单的FrameLayout,ID为'container'。我在MainActivity onCreate()方法中做的是将默认片段添加到容器:
public class HolderActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
....
FragmentList listFragment = new FragmentList();
// Add the fragment to the 'container'
getSupportFragmentManager().beginTransaction()
.add(R.id.container, listFragment).commit();
初始屏幕工作正常。 然后我根据按钮点击添加其他片段:
// Go to settings fragment
FragmentSettings mFragmentSettings = new FragmentSettings();
getFragmentManager().beginTransaction().replace(R.id.container, mFragmentSettings).commit();
问题在于,当我点击所需按钮App不会替换片段时,它只会在旧片段上添加新片段,因此它们会崩溃。你能告诉我我在这里做错了吗?
编辑: 当我尝试在我的 onOptionsItemSelected 方法中使用 getSupportFragmentManager()时:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
// Go to settings fragment
FragmentSettings mFragmentSettings = new FragmentSettings();
getFragmentManager().beginTransaction()
.replace(R.id.container, mFragmentSettings).commit();
}
return super.onOptionsItemSelected(item);
}
我收到此错误: “FragmentTransaction类型中的方法replace(int,Fragment)不适用于参数(int,FragmentSettings)”
答案 0 :(得分:1)
为什么使用supportFragmentManager然后使用普通的FragmentManager?
getSupportFragmentManager()
和getFragmentManager()
。
如果您使用的是ActionBarActivity
,请使用支持1。如果Activity
则为正常值。