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

zna*_*nat 45 android actionbarsherlock

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

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

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment {
    ... 
}
Run Code Online (Sandbox Code Playgroud)

我有以下编译错误:

The type android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files
Run Code Online (Sandbox Code Playgroud)

我检查了以下内容:

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

还要别的吗?

Séb*_*ZAT 67

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

  • 右键单击操作栏sherlock library => Properties=> Java Build Path=> Order and Exporttab => check android support v4Android Private Libraries选择Ok
  • 右键单击您的个人项目,然后转到properties => java build path => check Android Private Libraries
  • 清理这两个项目,它应该工作.

  • 我不得不把它搞乱一些,但订单和导出标签对我有用.Eclipse可能不会更难使用.值得庆幸的是,他们正在推出Android Studio (8认同)
  • 哎呀,我想知道在同一天制作Eclipse构建过程的Android Studio版本是否相关......这是推销新产品的一种方式...... (3认同)

end*_*ner 11

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

  1. 确保支持库位于ABS项目的libs文件夹中,而不是其他任何位置
  2. 右键单击库 - >构建路径 - >添加到构建路径
  3. 右键单击ABS项目 - >属性 - > Java构建路径 - >订单和导出 - >检查android-support-v4.jar文件并保存
  4. 右键单击已包含ABS的项目 - >属性 - > Java构建路径 - >订单和导出 - >选中"Android私有库"并保存
  5. 如果在依赖关系层次结构中有其他项目,请对所有这些项目执行步骤4
  6. 清理整个工作区(或所有受影响的项目)并希望最好.

然而,对于我来说,为什么它必须如此复杂是一个谜 - 正如Josh所提到的,Eclipse结合Android和具有几个依赖关系的大型项目很难使用,我希望这将在不久的将来得到改善.


Car*_*los 10

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

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

对每个库重复此操作.


Spe*_*505 8

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