web-dev-qa-db-ja.com

互換性パッケージでフラグメントを膨らませるandroid

下位互換性パッケージを使用して、Fragmentを含むレイアウトを拡張しようとしています。 jarファイルを取得して、プロジェクトのlibsフォルダーに配置しました。 Fragmentを拡張し、ActivityのcontentViewをに設定してFragmentを膨らませようとしました

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

しかし、コンテンツビューを設定すると、フラグメントタグのClassNotFoundExceptionで失敗します。これがlogcatの出力です。

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
26

アクティビティがFragmentActivityから継承していることを確認してください。継承していない場合は、<fragment> 動作しません。 これはサンプルプロジェクトです これを示しています。

76
CommonsWare