ClassCastException:CustomFragment不能转换为android.app.Fragment /使用android.support.v4.app.Fragment

我正在开发一个应用程序分为一个库和两个应用程序:1个手机,另一个平板电脑。 库中定义了许多代码和布局,在应用程序中只定义了几个部分。

我在Activity使用了片段,在手机版本中使用了ViewPager (在库中定义的布局和活动,在电话应用中没有任何改变)。 对于平板电脑版本,我想显示我的碎片(2)并排,而不是在ViewPager ,所以我试图build立一个像这样的XML布局:

 <....> <LinearLayout android:id="@+id/fragmentsParent" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <fragment android:id="@+id/f1" android:class="com.test.Fragment1" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/f2" android:name="com.test.Fragment2" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> </....> 

我的问题是,代码是在我的手机应用程序,但不是在我的平板电脑应用程序。 在这一个,我得到这个exception堆栈:

 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050) 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 07-11 17:41:14.032: E/AndroidRuntime(14754): ... 11 more 07-11 17:41:14.032: E/AndroidRuntime(14754): Caused by: java.lang.ClassCastException: com.test.Fragment1 cannot be cast to android.app.Fragment 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Fragment.instantiate(Fragment.java:560) 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Fragment.instantiate(Fragment.java:535) 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Activity.onCreateView(Activity.java:4168) 07-11 17:41:14.032: E/AndroidRuntime(14754): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664) 

错误消息讨论android.app.Fragment ,我期望android.support.v4.app.Fragment

search网页后,我检查了这些要点:

  • 我的活动扩展了android.support.v4.app.FragmentActivity
  • 我的片段扩展android.support.v4.app.Fragment
  • 我的应用程序使用support.v4库。

Solutions Collecting From Web of "ClassCastException:CustomFragment不能转换为android.app.Fragment /使用android.support.v4.app.Fragment"

您的活动必须通过FragmentActivity进行扩展。

你可能错了(混合)的import和instad的

 import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; 

你有

 import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; 

因此铸造的问题。

你有没有解决这个问题? 如果没有,你应该签出你的清单文件,如果有一个活动声明您的碎片名称。 (如果是的话,删除它们)

我刚刚遇到了同样的问题,在我的情况下调用super.onCreate(Bundle)之前设置布局与setContentView(int)解决了ClassCastException