15

仅在将兼容性库用于 3.0 之前的设备时才会发生这种情况

我收到一个我无法确定的错误。我有一个带有 ListFragment 和标准 Fragment 的 Activity。它就像 Android 开发指南的开发者部分中提供的示例一样。

ListFragment 子类(没有重写函数)

public class ItemListFragment extends ListFragment

主要活动

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

MainActivity 的 XML 布局

<?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 的错误消息

错误/AndroidRuntime:原因:java.lang.ClassCastException:org.example.ItemListFragment 无法转换为 android.app.Fragment

4

2 回答 2

35

经过一番认真的谷歌搜索后,我发现一篇文章指出了一个不错的小花絮。使用兼容性库时,使用片段的活动必须扩展 FragmentActivity。一旦我这样做了,错误就不会再次出现。

于 2011-05-03T19:29:38.670 回答
1

For me the problem was that I had forgotten to change the manifest. Following the suggestion of the tutorial I converted my Activity to a Fragment and made a shell Activity to call it. My manifest still pointed to the Fragment class leading to a Class Cast Exception.

于 2011-10-05T19:57:47.173 回答