使用viewpager和fragment的未知粉碎我的android应用程序
这是我的android项目的完整代码。 在这里,我使用viewpager和3个片段。在第一个片段中,我有一个edittext和一个按钮。当我单击button时,它会将数据发送到托管活动,然后从托管活动将数据发送到第二个活动,并在textview中显示数据。第三个片段只是普通页面 当运行我的程序并在第一个片段中用edittext编写一些内容并单击按钮时,它会像我预期的那样将数据发送到第二个片段,但问题是,如果我访问第三个片段,然后来到第一个片段,则执行与上面所述相同的任务,我的程序会将数据粉碎,而不是将数据发送到第二个片段 它在日志中显示以下错误使用viewpager和fragment的未知粉碎我的android应用程序,android,xml,android-fragments,native,Android,Xml,Android Fragments,Native,这是我的android项目的完整代码。 在这里,我使用viewpager和3个片段。在第一个片段中,我有一个edittext和一个按钮。当我单击button时,它会将数据发送到托管活动,然后从托管活动将数据发送到第二个活动,并在textview中显示数据。第三个片段只是普通页面 当运行我的程序并在第一个片段中用edittext编写一些内容并单击按钮时,它会像我预期的那样将数据发送到第二个片段,但问题是,如果我访问第三个片段,然后来到第一个片段,则执行与上面所述相同的任务,我的程序会将数据粉碎,而
E/AndroidRuntime(773): FATAL EXCEPTION: main
E/AndroidRuntime(773): Process: com.example.swipeapp, PID: 773
E/AndroidRuntime(773): java.lang.ClassCastException:
com.example.swipeapp.FirstActivity cannot be cast tocom.example.swipeapp.SecondActivity
E/AndroidRuntime(773): at com.example.swipeapp.MainActivity.sendData(MainActivity.java:38)
E/AndroidRuntime(773): at com.example.swipeapp.FirstActivity$1.onClick(FirstActivity.java:31)
E/AndroidRuntime(773): at android.view.View.performClick(View.java:4424)
E/AndroidRuntime(773):at android.view.View$PerformClick.run(View.java:18383)
E/AndroidRuntime(773): at android.os.Handler.handleCallback(Handler.java:733)
请给我任何建议,为什么此应用程序会凌驾于此上的任何教程或文档,我将不胜感激……提前感谢:
这是我的片段适配器代码
public class FragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter{
public FragmentAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public int getIconResId(int index) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Fragment getItem(int position)
{
// TODO Auto-generated method stub
Fragment fragment = new FirstActivity();
switch(position){
case 0:
fragment = new FirstActivity();
break;
case 1:
fragment = new SecondActivity();
break;
case 2:
fragment = new ThirdActivity();
break;
}
return fragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public CharSequence getPageTitle(int position){
String title = "";
switch(position){
case 0:
title = "First Fragment";
break;
case 1:
title = "Second";
break;
case 2:
title = "Third";
break;
}
return title;
}
}实际上,您试图从第一个片段转换到第二个片段是非法的,我知道如何解决这个问题并给你一个解决方案,但它太长了。请给我任何类型的文档链接或教程来解释我的想法,或者至少告诉我哪里做错了,这样我就可以搜索这个主题@noxsaeed你的问题在这里SecondActivity rf=SecondActivity getSupportFragmentManager.findFragmentByIdR.id.pager;在sendData功能中,您使用寻呼机id调用findFragmentById,寻呼机包含第一个片段而不是第二个片段如果是这样,那么当我单击按钮并将数据发送到第二个片段时,它是如何工作的……我想您不明白我的问题……我的应用程序工作正常,直到我转到第三个片段。。。。如果我转到第三个片段,然后来到第一个片段并单击按钮,那么应用程序将崩溃,否则它将正常工作@NoXSaeedi祝你解决问题好运。你真正想做的:O@Dev Carlsberg
@Override
public Fragment getItem(int position){
// TODO Auto-generated method stub
Fragment fragment = new Fragment();
switch(position){
case 0:
fragment = new FirstActivity();
break;
case 1:
fragment = new SecondActivity();
break;
case 2:
fragment = new ThirdActivity();
break;
}
return fragment;
}