ClassCastException :CustomFragment не может быть приведен к android.app.Fragment/использованию android.support.v4.app.Fragment

Я разрабатываю приложение, разделенное на одну библиотеку и два приложения :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.

После поиска в Интернете я проверил эти пункты:

  • Моя активность распространяется android.support.v4.app.FragmentActivity,
  • Мои фрагменты простираются android.support.v4.app.Fragment,
  • В моем приложении используется библиотека support.v4.
8
задан tshepang 21 March 2014 в 19:46
поделиться