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

时间:2013-05-16 13:09:43

标签: android actionbarsherlock

我在一个项目库中使用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项目中,而不是其他依赖项目

还有别的吗?

9 个答案:

答案 0 :(得分:67)

自从我更新SDK以来,我遇到了同样的问题。 我通过这样做(在eclipse上)解决了我的问题:

  • 右键单击操作栏sherlock library => Properties => Java Build Path => Order and Export标签=>选中android support v4Android Private Libraries,然后选择确定
  • 右键点击您的个人项目,然后转到properties => java build path => check Android Private Libraries
  • 清理这两个项目,它应该可以工作。

答案 1 :(得分:11)

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

  1. 确保支持库位于ABS项目的libs文件夹中,而不是其他地方
  2. 右键点击图书馆 - >构建路径 - >添加到构建路径
  3. 右键点击ABS项目 - >属性 - > Java构建路径 - >订单和出口 - >检查android-support-v4.jar文件并保存
  4. 右键点击已包含ABS的项目 - >属性 - > Java构建路径 - >订单和出口 - >检查“Android私有库”并保存
  5. 如果您的依赖关系层次结构中有其他项目,请对所有这些项目执行步骤4
  6. 清理整个工作区(或所有受影响的项目)并希望最好。
  7. 然而,对于我来说,为什么这一点必须如此复杂才是一个谜 - 正如Josh所说,Eclipse与Android结合以及具有几个依赖关系的大型项目很难使用,我希望这将在不久的将来得到改善

答案 2 :(得分:10)

在我的情况下,我使用2个Android库,需要android支持库。 问题是两个库都有不同版本的Android支持库。

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

对每个库重复此操作。

答案 3 :(得分:8)

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

答案 4 :(得分:4)

这是最简单的解决方案:

右键单击项目文件夹 - >构建路径 - >配置构建路径 - > 添加外部罐子(来自库标签) - >选择“android-support-v4.jar”文件。

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

在此之后清理你的项目和快乐的编码......

答案 5 :(得分:1)

我遇到了同样的问题,我通过右键单击项目解决了这个问题 - > Buid路径 - >配置构建路径 - > “从左手列表中选择Android” - > “从右侧面板中选择构建项目目标的复选框” - >点击Apply - >单击确定

答案 6 :(得分:0)

对我来说有用的东西与@Sebastien和@FleshWound上面的解决方案有点不同。

  • 复制文件" android-support-v4.jar"来自/ MyProject / libs /并覆盖/ActionBarSherlock/libs/android-support-v4.jar上的那个。
  • 去了"项目属性" - > " Java Build Path" - > "添加" - > ActionBarSherlock项目。
  • 清理项目。

答案 7 :(得分:0)

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

import android.support.v4.app.ListFragment;

然后在app diectory中更新了build.gradle:确保依赖项部分包含支持库 -

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

答案 8 :(得分:0)

我是stackoverflow的新手。 然而,这是我的解决方案或经验。 我通过Project Properties解决了这个问题 - >左侧面板上的“Android” - >添加 - >从下拉菜单中选择所需的支持库 - >'应用' - >确定

这就完成了。即使从“Java Build Path”的“Order and Export”中取消选中“Android Private Libraries”,这仍然有用。