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 & ShareActionProvider 导致 InflateException
ActionBarSherlock、ViewPager、TabsAdapter 嵌套选项卡片段