ClassCastException: CustomFragment no se puede convertir a android.app.Fragment / Using android.support.v4.app.Fragment
Estoy desarrollando una aplicación dividida en una biblioteca y dos aplicaciones: 1 para teléfonos y otra para tabletas. En la biblioteca se define una gran cantidad de código y diseño, y solo se definen algunas partes en las aplicaciones.
Estoy usando fragmentos en unActivity
, con unViewPager
para la versión del teléfono (diseño y actividad definidos en la biblioteca, utilizados sin cambios en la aplicación del teléfono). Para la versión de tableta, quiero mostrar mis fragmentos (2) de lado a lado, y no en unaViewPager
, así que traté de construir un diseño XML como ese:
<....>
<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>
</....>
Mi problema es que el código funciona en la aplicación de mi teléfono, pero no en la aplicación de mi tableta. En este, me sale esta pila de excepción:
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)
Los mensajes de error hablan deandroid.app.Fragment
donde yo esperaríaandroid.support.v4.app.Fragment
.
Después de buscar en la web, he comprobado estos puntos:
Mi actividad se extiendeandroid.support.v4.app.FragmentActivity
,Mis fragmentos se extiendenandroid.support.v4.app.Fragment
,Mi aplicación utiliza la biblioteca support.v4.