我正在尝试使用向后兼容包和 SDK 级别 10 扩展包含片段的布局。我将 jar 文件放在我项目的 libs 文件夹中。我扩展了 FragmentActivity。
当我在 XLarge 屏幕设备上以 API 级别 11 运行时,这一切都运行良好。
当我退回到针对级别 10 进行编译并在正常大小的屏幕上运行时,我在创建新 Activity 并膨胀其中的片段时遇到故障。
引起:java.lang.ClassNotFoundException: android.view.fragment in loader 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.view.fragment,而不是兼容版本android.support.v4.app.Fragment。当然,在 API 级别 10 上不会找到 android.view.fragment。但是那个 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 构建路径下的构建路径中
我在清单中有(并且我尝试了名称的不同变体)。
在开始使用 Fragment 时,我首先在蜂窝设备上使用 API 11,并且一切正常。正是在使用兼容性库时,我遇到了相同的代码(修改为使用略有不同的兼容性 API)。任何想法都会非常受欢迎。谢谢,彼得