8

我正在开发一个应用程序,分为一个库和两个应用程序:一个用于手机,另一个用于平板电脑。库中定义了很多代码和布局,而应用程序中只定义了少数部分。

我在 an 中使用片段Activity,其中 aViewPager用于电话版本(在库中定义的布局和活动,在电话应用程序中使用时没有更改)。对于平板电脑版本,我想并排显示我的片段 (2),而不是在 a 中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 库。
4

4 回答 4

6

您的 Activity 必须由 FragmentActivity 扩展。

于 2013-04-10T17:33:44.020 回答
2

你可能弄错了(混合)进口和instad

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

你有

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;

因此演员表问题。

于 2013-04-10T19:29:31.687 回答
0

我刚刚遇到了同样的问题,在我的情况下,在使用 setContentView(int) 设置布局之前调用 super.onCreate(Bundle) 解决了 ClassCastException

于 2015-04-03T12:07:24.330 回答
0

你有没有以任何方式解决这个问题?如果没有,你应该检查你的清单文件,如果有一个使用你的 Fragments 名称声明的 Activity。(如果是这样,删除它们)

于 2013-06-04T08:14:00.057 回答