即使参数是片段,FragmentTransaction .add()参数也会给出“需要片段”错误

时间:2016-06-08 19:37:04

标签: java android android-fragments

相关代码:

addDay.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            ++fragIdCount;
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            String fragString = Integer.toString(fragIdCount);
            TemplateFragment1 frag2 = new TemplateFragment1(); // creating new fragment frag2 of fragment TemplateFragment1
            fragmentTransaction.add(R.id.templateFragmentLayout, frag2, fragString); // "frag2" is where the error is
            fragmentTransaction.commit();
            fragmentManager.executePendingTransactions();
        }
    });

TemplateFragment1是一个片段。我正在创建一个新的TemplateFragment1片段的新变量。当我在(frag2)中传递它时,我得到一个错误,说它需要一个片段,但frag2是一个片段!这很奇怪,因为我在我的程序中的其他地方有这种结构,工作正常。

编辑:我做了一些研究,我不知道为什么我使用支持片段,但现在我知道更好了!

2 个答案:

答案 0 :(得分:0)

你可能正在传递支持片段(android.support.v4.app.Fragment),在这种情况下你应该使用getSupportFragmentManager()或者在另一种情况下使用android.app.Fragment

答案 1 :(得分:0)

您的TemplateFragment1可能会扩展android.support.v4.app.Fragment(检查该类中的导入),并且您正在使用getFragmentManager方法,该方法采用android.app.Fragment类型的参数,这是与支持库中的不一样。

将方法更改为getSupportFragmentManagerTemplateFragment1以扩展相应的片段android.app.Fragment