InflateException错误充气类片段 [英] InflateException error inflating class fragment

查看:186
本文介绍了InflateException错误充气类片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始不断有碎片的活动时收到这个错误。

I keep getting that error when starting the activity that has fragment.

这是我的code的概述:

This is the overview of my code:

首页的活动从开始的开机的屏幕活动

Home activity is started from Splash screen activity

home.xml (每个片段都有50% layout_weight

home.xml (Each fragment has 50% layout_weight)

<LinearLayout>
    <fragment android:name="com.example.test.FragmentClass1" ...>
    <fragment android:name="com.example.test.FragmentClass2" ...>
</LinearLayout>

fragment1.xml

<LinearLayout>
    //some EditTexts and Buttons here
<LinearLayout>

fragment2.xml

<LinearLayout>
    <ListView ... />
</LinearLayout>

FragmentClass1.java

public class FragmentClass1 extends Fragment{
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.fragment1, container, false);
        return view;
    }
}

FragmentClass2.java

public class FragmentClass2 extends ListFragment{
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.fragment2, container, false);
        return view;
    }
}

Home.java

public class Home extends Activity{
    public View onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        //still empty
    }
}

错误日志是这样的:

The error log is this:

12-09 20:39:00.317: E/AndroidRuntime(18214): FATAL EXCEPTION: main
12-09 20:39:00.317: E/AndroidRuntime(18214): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Home}: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.os.Looper.loop(Looper.java:137)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread.main(ActivityThread.java:5039)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at java.lang.reflect.Method.invokeNative(Native Method)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at java.lang.reflect.Method.invoke(Method.java:511)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at dalvik.system.NativeStart.main(Native Method)
12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Activity.setContentView(Activity.java:1881)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at com.example.test.Home.onCreate(Home.java:16)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Activity.performCreate(Activity.java:5104)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-09 20:39:00.317: E/AndroidRuntime(18214):    ... 11 more
12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: java.lang.ClassCastException: com.example.test.Fragment1 cannot be cast to android.app.Fragment
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Fragment.instantiate(Fragment.java:585)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Fragment.instantiate(Fragment.java:560)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.app.Activity.onCreateView(Activity.java:4709)
12-09 20:39:00.317: E/AndroidRuntime(18214):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
12-09 20:39:00.317: E/AndroidRuntime(18214):    ... 21 more

任何解决方案?谢谢

Any solution? Thanks

推荐答案

如果你正在尝试使用片段支持Android包的反向移植,你需要有你的活动从 FragmentActivity (或者其他什么东西,从 FragmentActivity ,如 SherlockFragmentActivity )。

If you are trying to use the Android Support package's backport of fragments, you need to have your activity inherit from FragmentActivity (or from something else that inherits from FragmentActivity, like SherlockFragmentActivity).

更新

从堆栈跟踪的关键行是:

The key line from your stack trace is:

12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: java.lang.ClassCastException: com.example.test.Fragment1 cannot be cast to android.app.Fragment

现在,有没有在你提供​​的源$ C ​​$ C,它被命名为 com.example.test.Fragment1 。如果这真的是你在您的物品有作为 com.example.test.FragmentClass1 ,那么presumably的片段你继​​承不是 android.app.Fragment 。最有可能的,在这种情况下,它是 android.support.v4.app.Fragment - 从片段类反向移植的。如果是这样的情况下,改变import语句(并在code基其余任何其他缺陷的)。

Now, there is nothing in your supplied source code that is named com.example.test.Fragment1. If this is really what you have in your listings as com.example.test.FragmentClass1, then presumably the Fragment you are inheriting from is not android.app.Fragment. Most likely, in that case, it is android.support.v4.app.Fragment -- the Fragment class from the backport. If this is the case, change the import statement (and any other flawed ones in the rest of your code base).

这篇关于InflateException错误充气类片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆