ClassCastException: CustomFragment nie może być rzutowany na android.app.Fragment / Korzystanie z android.support.v4.app.Fragment
Opracowuję aplikację podzieloną na jedną bibliotekę i dwie aplikacje: 1 na telefony, drugą na tablety. W bibliotece zdefiniowano wiele kodu i układu, a w aplikacjach zdefiniowano tylko kilka części.
Używam fragmentów wActivity
, zViewPager
dla wersji telefonu (układ i aktywność zdefiniowana w bibliotece, używane bez zmian w aplikacji telefonu). Dla wersji tabletu chcę pokazać moje fragmenty (2) obok siebie, a nie w aViewPager
, więc próbowałem zbudować taki układ 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>
</....>
Mój problem polega na tym, że kod działa na mojej aplikacji telefonicznej, ale nie na mojej aplikacji tabletu. Na tym otrzymuję ten stos wyjątków:
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)
Komunikaty o błędach mówią oandroid.app.Fragment
gdzie bym się spodziewałandroid.support.v4.app.Fragment
.
Po przeszukaniu internetu sprawdziłem te punkty:
Moja działalność się rozszerzaandroid.support.v4.app.FragmentActivity
,Moje fragmenty się rozszerzająandroid.support.v4.app.Fragment
,Moja aplikacja korzysta z biblioteki support.v4.