ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的

Posted

技术标签:

【中文标题】ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的【英文标题】:ActionBarSherlock - The type android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files 【发布时间】:2013-05-11 09:38:56 【问题描述】:

我在一个本身就是一个库的项目中使用 ActionBarSherlock 作为一个库项目。 在我将项目移至新计算机并更新 SDK 工具之前,一切正常。

我有这个错误,我不明白。当我像这样创建一个扩展 SherlockFragment 的类时:

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment 
    ... 

我有以下编译错误:

The type android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files

我已经检查了以下内容:

ActionBarSherlock 作为库导入 构建路径中没有明显错误(没有红叉)并且存在 actionbarsherlock.jar 支持库在 ActionBarSherlock 项目中,而不在其他依赖项目中

还有什么?

【问题讨论】:

您是否尝试过将支持库也添加到其他项目中? 你能创建一个新类吗?如果是,那么你检查过导入语句吗?并且该项目现在还可以正常工作吗? 我认为你的一个班级已经导入了你没有添加支持库的 android.support.v4.app.Fragment 我昨天(5 月 15 日)更新了我的 SDK 和地图 API 后遇到同样的问题 我也更新了同样的问题 【参考方案1】:

自从我更新了 SDK 后,我遇到了和你一样的问题。 我已经通过这样做(在 Eclipse 上)解决了我的问题:

右击操作栏sherlock library => Properties => Java Build Path => Order and Export tab => 勾选android support v4 or Android Private Libraries 并选择Ok 右键单击您的个人项目并转到属性 => java build path => check Android Private Libraries 清理两个项目,它应该可以工作。

【讨论】:

我不得不把它弄乱一些,但订单和导出选项卡对我有用。 Eclipse 不会更难使用。谢天谢地,他们推出了那个 Android Studio 天啊,我想知道与使 Eclipse 构建过程更加混乱的同一天发布的 Android Studio 是否相关...这是推销新产品的一种方式...【参考方案2】:

Sebastien 的回答实际上让我找到了解决方案。但是,重要的是要提到必须手动将支持库添加到构建路径中,以便能够检查它以进行导出。为了将来参考,以下是为我解决问题的步骤:

    确保支持库位于 ABS 项目的 libs 文件夹中,而不是其他位置 右键单击库 --> 构建路径 --> 添加到构建路径 右键ABS项目-->属性-->Java构建路径-->排序和导出-->勾选android-support-v4.jar文件并保存 右键点击你已经包含ABS的项目-->属性-->Java构建路径-->排序和导出-->勾选“Android私有库”并保存 如果您的依赖层次结构中有其他项目,请对所有这些项目执行第 4 步 清理整个工作区(或所有受影响的项目),希望一切顺利。

但是,为什么这必须如此复杂,这对我来说是个谜——正如 Josh 所提到的,Eclipse 与 Android 和具有几个依赖项的大型项目相结合很难使用,我希望在不久的将来会有所改进.

【讨论】:

【参考方案3】:

在我的例子中,我使用了 2 个需要 android 支持库的 Android 库。 问题是这两个库都有不同版本的 Android 支持库。

解决问题:右键单击库项目 => Android 工具 => 添加支持库。

对每个库重复此操作。

【讨论】:

【参考方案4】:

我有同样的问题。有2个不同的图书馆。从您的主项目中删除支持库

【讨论】:

这是 sherlock support.v4 和原始 support.v4 之间的某种冲突。从您的项目/库(而不是 sharlock 项目)中删除原始库将解决此问题。 这与确保 ActionBarSherlock 存在 bin/classes 文件夹一起为我修复了它【参考方案5】:

这是最简单的解决方案:

右击你的项目文件夹->构建路径->配置构建路径-> 添加外部罐子(从库选项卡)-> 选择“android-support-v4.jar”文件。

(它将位于 Android SDK 文件夹中,这里是通用路径“android-sdk\extras\android\support\v4”)。

在这个干净之后,您的项目和编码愉快......

【讨论】:

它清除了编译时错误,但由于多个DEX得到了运行时错误【参考方案6】:

在我的情况下,我遇到了同样的问题,我通过右键单击项目解决了它 -> 构建路径 -> 配置构建路径 -> “从左侧列表中选择 Android” -> “选择构建项目目标的复选框从右侧面板“->单击应用->单击确定

【讨论】:

【参考方案7】:

对我有用的方法与上述线程中@Sebastien 和@FleshWound 的解决方案略有不同。

从 /MyProject/libs/ 复制文件“android-support-v4.jar”并覆盖 /ActionBarSherlock/libs/android-support-v4.jar 中的文件。 转到“项目属性”->“Java 构建路径”->“添加”-> ActionBarSherlock 项目。 清理项目。

【讨论】:

【参考方案8】:

我在使用 Android Studio 时遇到了类似的问题(加载 ListFragment)。 我最初导入了库:

导入android.support.v4.app.ListFragment;

然后在应用程序目录中更新 build.gradle:确保依赖项部分包含支持库-

  dependencies 
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:20.0.0 

【讨论】:

【参考方案9】:

我是 *** 的新手。 但是,这是我在这里的解决方案或经验。 我通过项目属性-->左侧面板上的“Android”解决了这个问题-->添加-->从下拉菜单中选择所需的支持库-->“应用”-->确定

这样就搞定了。即使未从 Java 构建路径的“订购和导出”中选中“Android 私有库”,这也有效。

【讨论】:

以上是关于ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的的主要内容,如果未能解决你的问题,请参考以下文章

更改 ActionBarSherlock 背景颜色

ActionBarSherlock & ShareActionProvider 导致 InflateException

Gradle 无法构建 ActionBarSherlock

ActionBarSherlock、ViewPager、TabsAdapter 嵌套选项卡片段

ActionBar 菜单项的动态可绘制图标? (安卓,ActionBarSherlock)

使用 Android Studio 安装 ActionbarSherlock?