导入HoloEverywhere时出现错误

14

首先,我是一个Android的新手。 我正在开发一个应用程序,并且正在实现一个名为HoloEverywhere的库。 该库在themes.xml中使用ActionBar Sherlock库。我已经将ActionBar Sherlock导入到我的工作空间中,并将其添加到HoloEverywhere中。 接下来,我将HoloEverywhere添加到我的项目中,但当我尝试使用它时,我遇到了一个错误(我尝试使用一个按钮):

The following classes could not be instantiated:
- com.WazaBe.HoloEverywhere.ButtonHolo (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse.

我把类的路径放在了我的布局中,就像这样:

<com.WazaBe.HoloEverywhere.ButtonHolo
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/text" />

我该如何解决这个问题并在我的项目中使用这个库?谢谢 :)

PS. 对不起我的英语不是很好。

你好,我是Christophe(或Waza_be),这是我第一次看到这样的错误!如果我找到了什么,我会来回答你的! - Waza_Be
我按照步骤操作,但在pom.xml文件中出现以下错误:此行发现多个注释:- 从http://repo.maven.apache.org/maven2无法传输org.apache.maven.plugins:maven-enforcer-plugin:pom:1.0已缓存在本地存储库中,解析将不会重新尝试,直到中央的更新间隔已过或强制更新。原始错误:无法传输artifact org.apache.maven.plugins:maven-enforcer-plugin:pom:1.0 from/to central(http://repo.maven.apache.org/maven2):操作被取消。- 项目构建错误:无法解决构建扩展名:插件 - mahdi
http://stackoverflow.com/a/20895081/623694 - Mehdi Fanai
4个回答

40

按照下面的步骤(取自博客),添加ActionBarSherlock

  1. 下载 .zip/.tgz 并解压缩
  2. 在 Eclipse 中选择 File->New-> Android Project
  3. 选择 Create project from existing source,然后浏览到提取的 AndroidBarSherlock 文件夹中的 library 文件夹
  4. 构建目标应该是最新的 (14 或15),但您的 minSdkVersion 可以较低 (7 或8)
  5. 点击 Finish
  6. 右键单击新创建的项目,选择 Properties
  7. Android 标题下,您应该看到一个名为Library的部分,其中有一个复选框 IsLibrary。请确保选中它。
  8. 在您希望添加AndroidBarSherlock的项目上右键单击->属性,在 Android 标题和 Library 部分下选择 Add
  9. 您应该看到 ActionBarSherlock 库,请将其添加到您的项目中
  10. 最后,如果您正在使用compatibility support,则需要删除那个jar,因为它已经包含在 ActionBarSherlock 中。

按照下面的步骤添加HoloEverywhere

  1. 从 GitHub 上下载 Zip 到您的计算机上
  2. 解压文件夹
  3. 在 Eclipse 中选择 File->New-> Android Project
  4. 选择 Create project from existing source,然后浏览到提取的文件夹内的 HoloEverywhereLib 文件夹
  5. 点击 Finish
  6. 右键单击新创建的项目,选择 Properties
  7. Android 标题下,您应该看到一个名为Library的部分,其中有一个复选框 IsLibrary。请确保选中它,并按Add键添加之前添加的库ActionBarSherlock

按照以下步骤将HoloEverywhere添加到您的项目中

  1. 创建一个新的Android项目
  2. 右键单击项目->属性-> Android-> 添加,添加 ActionBarSherlockHoloEverywhere两个库
  3. 更改 Android Manifest 为以下内容

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Holo.Theme">

  4. 编辑你的 main.xml 来包含 Holo 主题小部件。

  5. 更改您的 activity 如下

  6. public class ChkActionBarSherlock extends SherlockActivity {
        @Override
         public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
    }
    

1
是的,但从我所看到的最新版本中,没有名为Theme.HoloEverywhereDark.Sherlock的主题,我使用Holo.Theme.Sherlock.Light。 - Johan B
2
coding crow 的回答非常有用,但是在“”段落中缺少一步:ActionSherlock项目的“libs”文件夹中的库android-support-v4应该被删除,并替换为HoloEverywhere zip文件夹中存在的android-support-v4-r13.jar - Souf Rochdi
这还能用吗?在添加HoloEverywhere的第7步中,当将ABS作为库添加到HoloEverywhere时,我收到了约1000个“错误:属性“<任何属性>”已经被定义”的错误。 - Felix
@GauravAgarwal,感谢您的快速回复!所以我在我的工作区中有两个库项目(ABS和HoloEverywhere)。它们互相不知道,即ABS没有被HoloEverywhere使用。我创建了一个空的Android项目。添加任何一个库项目都没问题,但是一旦我添加了两个,就会出现“error: Attribute "<...>" has already been defined”错误。有什么想法吗? - Felix
@nissemand HoloEverywhere使用ABS。ABS不使用HoloEverywhere。 - Gaurav Agarwal
显示剩余14条评论

8

看起来

android:theme="@style/Theme.HoloEverywhereDark.Sherlock"

引起错误。

更改它:

android:theme="@style/Holo.Theme"

原因如下:

Github

正确!


4

我在我的项目中遇到了同样的错误,这是我所做的,右键单击HoloEverywhere(属性->android->库),从列表中删除ActionBarSherlock,然后通过点击添加重新添加ActionBarSherlock项目,之后清理项目,所有的错误都会消失。


1
ActionBarSherlock的创建者Jake Wharton在Google+上宣布,ActionBarSherlock的进一步开发已经停止。ActionBarSherlock 4.4是最后一个版本,可能会得到错误修复 - 但不会有任何新功能:

虽然在未来几周可能会有点发布,但第4.4版正在成为The Last Release™。

https://plus.google.com/+JakeWharton/posts/F3HkWY9J8fK

我在holoeverywhere问题论坛上提出了问题,并得到开发人员的回答:

HoloEverywhere从v2.0开始不再依赖ABS。

因此,您不应再使用ABS,应将该库从项目中删除,并直接使用Holoeverywhere或使用Google支持库中的ActionBarCompat进行替换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接