Java FragmentTransaction.add()参数给出;“需要片段”;错误,即使参数是片段
相关代码:Java FragmentTransaction.add()参数给出;“需要片段”;错误,即使参数是片段,java,android,android-fragments,Java,Android,Android Fragments,相关代码: addDay.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ ++fragIdCount; FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragment
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是一个片段!这很奇怪,因为我在程序的其他地方有这样一个结构,运行良好
编辑:我做了一些研究,我不知道为什么我要使用支持片段,但现在我知道了 您可能正在传递支持片段(android.support.v4.app.fragment),在这种情况下,您应该使用getSupportFragmentManager(),或者在另一种情况下使用android.app.fragment您的
TemplateFragment1
可能扩展了android.support.v4.app.fragment
(检查该类中的导入),您使用的是getFragmentManager
方法,该方法采用的参数类型为android.app.Fragment
,与支持库中的参数不同
将方法更改为
getSupportFragmentManager
或TemplateFragment1
以扩展适当的片段,android.app.Fragment
检查导入android.app.Fragment
与android.support.v4.app.Fragment
不同,很高兴能提供帮助。不久前我自己也有同样的问题:)