与兼容包的Andr​​oid充气片段 [英] inflating fragments with compatibility package android

查看:134
本文介绍了与兼容包的Andr​​oid充气片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图夸大包含​​片段使用向后兼容包的布局。我把jar文件并把它放在我的项目的libs文件夹。我伸出片段,然后试图通过该活动的设置内容查看到

要它充气

 <的LinearLayout
  的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
  机器人:layout_width =FILL_PARENT
  机器人:layout_height =FILL_PARENT
  机器人:方向=垂直>
 <片段
  类=com.test.fragments.AdFragment
  机器人:layout_width =FILL_PARENT
  机器人:layout_height =WRAP_CONTENT/>< / LinearLayout中>
 

但是,当我设置的内容视图失败了 ClassNotFoundException的的片段标记。 这里是logcat的输出。

 了java.lang.RuntimeException:无法启动活动ComponentInfo {}:\
      android.view.InflateException:二进制XML文件中的行#51:\
      错误充气类片段
   在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777)
   在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1793)
   在android.app.ActivityThread.access $ 1500(ActivityThread.java:123)
   在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:939)
   在android.os.Handler.dispatchMessage(Handler.java:99)
   在android.os.Looper.loop(Looper.java:123)
   在android.app.ActivityThread.main(ActivityThread.java:3848)
   在java.lang.reflect.Method.invokeNative(本机方法)
   在java.lang.reflect.Method.invoke(Method.java:507)
   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841)
   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
   在dalvik.system.NativeStart.main(本机方法)

 致:android.view.InflateException:二进制XML文件中的行#51:\
      错误充气类片段
   在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
   在android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
   在android.view.LayoutInflater.inflate(LayoutInflater.java:408)
   在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
   在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
   在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:211)
   在android.app.Activity.setContentView(Activity.java:1657)
   在com.test.base.activities.TabbedStoreActivity.onCreate(TabbedStoreActivity.java:46)
   在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
   在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1731)
   ... 11更多

 致:抛出java.lang.ClassNotFoundException:装载机\ android.view.fragment
      dalvik.system.PathClassLoader [/system/framework/com.google.android.maps.jar:\
      /data/app/com.test.test.apk]
   在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
   在java.lang.ClassLoader.loadClass(ClassLoader.java:551)
   在java.lang.ClassLoader.loadClass(ClassLoader.java:511)
   在android.view.LayoutInflater.createView(LayoutInflater.java:471)
   在android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
   在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
   在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
   ... 20个
 

解决方案

请确保您的活动是从 FragmentActivity 继承,否则<片断> 不起作用。 这里是证明这是一个示例项目。

I am trying to inflate a layout containing a Fragment using the backwards compatibility package. I took the jar file and placed it in the libs folder of my project. I extended Fragment and then tried to inflate it by setting the contentView of the Activity to

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 <fragment
  class="com.test.fragments.AdFragment"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"/></LinearLayout>

But when I set the content view it fails with a ClassNotFoundException for the fragment tag. Here is the logcat output.

java.lang.RuntimeException: Unable to start activity ComponentInfo{}: \
      android.view.InflateException: Binary XML file line #51: \
      Error inflating class fragment
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1793)
   at android.app.ActivityThread.access$1500(ActivityThread.java:123)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:3848)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:507)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
   at dalvik.system.NativeStart.main(Native Method)

 Caused by: android.view.InflateException: Binary XML file line #51: \
      Error inflating class fragment
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
   at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:211)
   at android.app.Activity.setContentView(Activity.java:1657)
   at com.test.base.activities.TabbedStoreActivity.onCreate(TabbedStoreActivity.java:46)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1731)
   ... 11 more

 Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader \
      dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar: \
      /data/app/com.test.test.apk]
   at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
   at android.view.LayoutInflater.createView(LayoutInflater.java:471)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
   ... 20 more

解决方案

Make sure your activity is inheriting from FragmentActivity, otherwise <fragment> does not work. Here is a sample project demonstrating this.

这篇关于与兼容包的Andr​​oid充气片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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