Android:无法替换活动onCreate()方法中的片段创建

时间:2014-11-16 12:28:26

标签: android android-fragments fragmentmanager

我为什么学习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)”

1 个答案:

答案 0 :(得分:1)

为什么使用supportFragmentManager然后使用普通的FragmentManager?

getSupportFragmentManager()getFragmentManager()

如果您使用的是ActionBarActivity,请使用支持1。如果Activity则为正常值。