2016-07-04 204 views
-1

我尝试构建一个方法来改变活动帧中的片段。 其中一项活动进展顺利,但在第二项活动中,我收到了Error。我从第一个活动复制的代码,并更改相关的东西,但在第二部分中,我得到错误说无法解决方法错误Android Studio

Error:(65, 25) error: no suitable method found for add(int,MyCarView)
method FragmentTransaction.add(Fragment,String) is not applicable (argument mismatch; int cannot be converted to Fragment)
method FragmentTransaction.add(int,Fragment) is not applicable (argument mismatch; MyCarView cannot be converted to 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(); 

代码** =是,标记为错误的部分

就像我之前说过的,我已经将这些代码放在其他活动中,并且它们运行良好。

这里有什么问题?

+1

错误提示:“MyCarView无法转换为碎片” - 您的汽车是否显示“碎片”? – JimmyB

+0

是的。 “MyCarView”是一个片段,完全像“MyCarEdit”,我不明白他们之间有什么不同...... –

+1

您是使用'android.support.v4.app.Fragment'还是'android.app.Fragment' ?确保你在两个方面都使用相同的方法。看看这里:http://stackoverflow.com/questions/25744681/android-adding-a-simple-fragment –

回答

0

除了使用正确的类,你不应该以你正在做的方式创建碎片。 Google的创建片段的指导原则是,您需要有一个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() {} 

    ... 
} 
+0

谢谢!我现在在这里,所以我从答案中学到了很多。 –

+0

没有问题!使用这种模式将允许你传递参数到你的片段中。关于你的问题,我99.9%肯定@Daniel Nugent的答案将解决它。如果您发现有用的答案,请考虑upvoting。 – Chisko

+0

是的,你的答案和@Daniel Nugent的答案可以帮助我找到我的错误。我为你投票,但我没有足够的声誉,所以你没有看到。 –