下位互換性パッケージとSDKレベル10を使用して、フラグメントを含むレイアウトを拡張しようとしています。jarファイルを取得して、プロジェクトのlibsフォルダーに配置しました。FragmentActivityを拡張しました。
XLarge画面デバイスでAPIレベル11で実行すると、すべてが完全に機能します。
レベル10に対してコンパイルに戻り、通常のサイズの画面で実行すると、新しいアクティビティが作成され、その中のフラグメントが膨張する時点で失敗します。
原因:java.lang.ClassNotFoundException:ローダー内のandroid.view.fragment dalvik.system.PathClassLoader [/data/app/com.motoappsummitagenda-1.apk] 04-01 01:07:14.311 2870 2870 E AndroidRuntime:at dalvik .system.PathClassLoader.findClass(PathClassLoader.java:243)
つまり、互換性バージョンのandroid.support.v4.app.Fragmentではなく、どこかでandroid.view.fragmentを探しているように見えます。もちろん、android.view.fragmentはAPIレベル10では見つかりません。しかし、そのandroid.view.fragmentはどこから来ているのでしょうか。
膨張しているXMLは
<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.motorapp.SessionFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sessionfragment">
</fragment>
そのためのコードは次のように始まります。
package com.motorapp;
import java.util.List;
import java.util.ListIterator;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.support.v4.app.*;
import android.support.v4.util.*;
import android.support.v4.*;
import android.support.v4.widget.*;
public class SessionFragment extends android.support.v4.app.Fragment {
症状はこの問題に似ていますが 、互換性パッケージandroidでフラグメントを膨らませるという間違いはありません
android.compatibility.v4.android-support-v4 jarファイルは、Eclipseの[プロジェクト]>[プロパティ]>[Javaビルドパス]のビルドパスにあります。
私はマニフェストにあります(そして私は名前のさまざまなバリエーションを試しました)。
フラグメントの使用を開始するにあたり、私は最初にハニカムデバイスでAPI 11を使用しましたが、それはすべて完全に機能します。私がこの問題を抱えているのは、互換性ライブラリで動作する同じコード(わずかに異なる互換性APIを使用するように変更された)を取得することです。どんなアイデアでも大歓迎です。ありがとう、ピーター