相关代码:
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是一个片段!这很奇怪,因为我在我的程序中的其他地方有这种结构,工作正常。
编辑:我做了一些研究,我不知道为什么我使用支持片段,但现在我知道更好了!
答案 0 :(得分:0)
你可能正在传递支持片段(android.support.v4.app.Fragment),在这种情况下你应该使用getSupportFragmentManager()或者在另一种情况下使用android.app.Fragment
答案 1 :(得分:0)
您的TemplateFragment1
可能会扩展android.support.v4.app.Fragment
(检查该类中的导入),并且您正在使用getFragmentManager
方法,该方法采用android.app.Fragment
类型的参数,这是与支持库中的不一样。
将方法更改为getSupportFragmentManager
或TemplateFragment1
以扩展相应的片段android.app.Fragment
。