ClassCastException异常:CustomFragment不能转换到android.ap

2019-07-30 08:30发布

我正在开发一个图书馆和两个应用程序划分应用程序: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库。

Answer 1:

你的活动必须由FragmentActivity进行扩展。



Answer 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;

所以要转换的问题。



Answer 3:

你有没有以任何方式解决此? 如果没有,你应该检查你的清单文件,如果没有与您的片段名字声明的活动。 (如果是这样,删除)



Answer 4:

我对面的同样的问题来了,在我的情况下调用super.onCreate(束)的setContentView(int)的设置布局之前解决ClassCastException异常



文章来源: ClassCastException: CustomFragment cannot be cast to android.app.Fragment / Using android.support.v4.app.Fragment