15

これは、3.0 より前のデバイス用の互換性ライブラリを使用している場合にのみ発生します

突き止められないというエラーが表示されます。ListFragment と標準 Fragment を持つ Activity があります。これは、Android Dev Guide の Developers セクションで提供されている例とまったく同じです。

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 からのエラー メッセージ

ERROR/AndroidRuntime: 原因: java.lang.ClassCastException: org.example.ItemListFragment は android.app.Fragment にキャストできません

4

2 に答える 2

35

いくつかの深刻なグーグル検索の後、ちょっとしたちょっとしたヒントを指摘する記事を見つけました。互換性ライブラリを使用する場合、フラグメントを使用するアクティビティは FragmentActivity を拡張する必要があります。それをしたら、エラーは二度と現れませんでした。

于 2011-05-03T19:29:38.670 に答える
1

私にとっての問題は、マニフェストを変更するのを忘れていたことです。チュートリアルの提案に従って、アクティビティをフラグメントに変換し、それを呼び出すためのシェルアクティビティを作成しました。私のマニフェストは、クラスキャスト例外につながるフラグメントクラスをまだ指し示していました。

于 2011-10-05T19:57:47.173 に答える