私は、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 ライブラリを使用しています。