ClassCastException en una subclase de ListFragment utilizando la biblioteca de compatibilidad
-
28-10-2019 - |
Pregunta
Esto solo sucede cuando se usa la biblioteca de compatibilidad para dispositivos anteriores a 3.0
Recibo un error que no puedo precisar. Tengo una actividad con un fragmento de lista y fragmento estándar. Es como el ejemplo proporcionado en la sección de desarrolladores de la Guía de desarrollo de Android.
Subclase de ListFragment (sin funciones anuladas)
public class ItemListFragment extends ListFragment
Actividad principal
public class ItemViewerActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_viewer);
}
}
Diseño XML para MainActivity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<fragment class="org.example.ItemListFragment"
android:id="@+id/item_list_fragment"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/item_info_frame"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
Mensaje de error de LogCat
Error/AndroidRuntime: causado por: java.lang.classcastException: org.example.itemListFragment no se puede emitir en android.app.fragment
Solución
Después de un google serio, encontré un artículo que señalaba un pequeño tidbit. Al usar la biblioteca de compatibilidad, sus actividades que usan fragmentos deben extender la fragmentación de la fragmentación. Una vez que hice eso, el error no se presentó nuevamente.
Otros consejos
Para mí, el problema era que me había olvidado de cambiar el manifiesto. Después de la sugerencia del tutorial, convertí mi actividad en un fragmento e hice una actividad de conchas para llamarlo. Mi manifiesto todavía apuntaba a la clase de fragmentos que condujo a una excepción de clase.