我尝试构建一个在活动框架中更改片段的方法。 其中一项活动进展顺利,但在第二项活动中我遇到了错误。我已经复制了第一个活动中的代码并更改了相关内容,但在第二部分中我得到的错误是
错误:(65,25)错误:没有为add(int,MyCarView)找到合适的方法 方法FragmentTransaction.add(Fragment,String)不适用 (参数不匹配; int不能转换为Fragment)
方法FragmentTransaction.add(int,Fragment)不适用 (参数不匹配; MyCarView无法转换为Fragment)
工作的代码是:
fragment2 = new MyCarEdit();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.myCarFrame,fragment2);
transaction.commit();
和不工作的代码的第二部分是 -
fragment3 = new MyCarView();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction2 = fragmentManager.beginTransaction();
transaction2.add**(R.id.myCarFrame2,fragment3)**;
transaction2.commit();
** =是标记为错误的部分
像我之前说过的那样,我已经将这些代码放在其他活动中,并且它们运行良好。这里有什么问题?
答案 0 :(得分:0)
除了使用正确的类之外,您不应该以您的方式创建Fragments。谷歌创建片段的指导原则是你需要一个public static Fragment newInstance()
方法来创建实例和参数,你的构造函数应该是空的。类似的东西:
public class YourFragment extends Fragment {
public static YourFragment newInstance() {
YourFragment frag = new YourFragment();
Bundle args = new Bundle();
...
frag.setArguments(args);
return frag;
}
public YourFragment() {}
...
}