8

私は、1 つのライブラリと 2 つのアプリケーション (1 つは電話用、もう 1 つはタブレット用) に分割されたアプリケーションを開発しています。ライブラリには多くのコードとレイアウトが定義されており、アプリケーションにはいくつかの部分しか定義されていません。

Activity電話バージョン用のでフラグメントを使用してViewPagerいます (ライブラリで定義されたレイアウトとアクティビティは、電話アプリケーションで変更せずに使用されます)。タブレット バージョンでは、フラグメント (2) を ではなく並べて表示したいViewPagerので、次のような XML レイアウトを構築しようとしました。

<....>
    <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>
</....>

私の問題は、コードが電話アプリケーションでは機能しているが、タブレット アプリケーションでは機能していないことです。これで、私はこの例外スタックを取得します:

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)

エラーメッセージはandroid.app.Fragment、私が期待する場所について語っていますandroid.support.v4.app.Fragment

Web を検索した後、次の点を確認しました。

  • 私の活動はandroid.support.v4.app.FragmentActivity
  • 私の断片が伸びてandroid.support.v4.app.Fragment
  • 私のアプリケーションは support.v4 ライブラリを使用しています。
4

4 に答える 4

6

アクティビティは FragmentActivity によって拡張する必要があります。

于 2013-04-10T17:33:44.020 に答える
0

私は同じ問題に遭遇しました。私の場合、 setContentView(int) でレイアウトを設定する前に super.onCreate(Bundle) を呼び出して ClassCastException を解決しました

于 2015-04-03T12:07:24.330 に答える