ClassCastException в подклассе ListFragment с использованием библиотеки совместимости

Это происходит только при использовании библиотеки совместимости для устройств до 3.0.

Я получаю сообщение об ошибке, которое я не могу зафиксировать. У меня есть Activity с ListFragment и стандартным фрагментом. Это похоже на пример, представленный в разделе "Разработчики" руководства Android Dev.

Подкласс класса ListFragment (без переопределения функций)

public class ItemListFragment extends ListFragment

MainActivity

public class ItemViewerActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_viewer);
    }
}

Xml Layout для 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>

Сообщение об ошибке из LogCat

ERROR/AndroidRuntime: вызвано: java.lang.ClassCastException: org.example.ItemListFragment не может быть добавлено в android.app.Fragment

Ответы

Ответ 1

После серьезного поиска в Google, я нашел статью, в которой был отмечен приятный маленький лакомый кусочек. При использовании библиотеки совместимости ваши действия, которые используют фрагменты, должны расширять FragmentActivity. Как только я это сделал, ошибка снова не появилась.

Ответ 2

Для меня проблема заключалась в том, что я забыл изменить манифест. Следуя предложению учебника, я преобразовал свою активность в фрагмент и сделал для нее операцию оболочки. Мой манифест по-прежнему указывал на класс Fragment, ведущий к исключению класса Cast.