ClassCastException: CustomFragment cannot be added to android.app.Fragment / Using android.support.v4.app.Fragment

I am developing an application divided into one library and two applications: 1 for phones, the other for tablets. A lot of code and layout are defined in the library, and only a few parts are defined in applications.

I use fragments in Activity , with ViewPager for the phone version (layout and activity defined in the library, used without changes in the phone application). For the tablet version, I want to show my fragments (2) side by side, and not in ViewPager , so I tried to create such an XML layout:

 <....> <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> </....> 

My problem is that the code is working on my phone app, but not on my tablet app. On this I get this exception stack:

 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) 

The error messages say about android.app.Fragment , where I would expect android.support.v4.app.Fragment .

After searching the Internet, I checked these points:

  • My activity extends android.support.v4.app.FragmentActivity ,
  • My snippets are expanding android.support.v4.app.Fragment ,
  • My application uses the support.v4 library.
+8
android android-fragments android-support-library
source share
4 answers

Your activity should be expanded by FragmentActivity.

+6
source share

You are probably mistaken for (mixed) imports and instad

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

you have

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

hence the throw problem.

+1
source share

Did you solve it somehow? If not, you should check your manifest file if there is activity declared with your fragment name. (if so, delete them)

0
source share

I just ran into the same problem, in my case, calling super.onCreate (Bundle) before setting the layout using setContentView (int) solved ClassCastException

0
source share

All Articles