为 Android 应用程序设置 ActionBarSherlock 主题

2024-02-29

阅读下面的更新 2 寻找答案

我正在尝试在我的应用程序中使用 ActionBarSherlock。我查看了 4.0.0 版本项目 github 仓库 https://github.com/JakeWharton/ActionBarSherlock,在 Netbeans 中构建它,然后将library-4.0.0.jar 文件复制到我的项目的 lib 目录中(我没有使用 Eclipse)。

现在它只是一个骨架活动,它在 ICS 中启动得很好,但是当我在 Gingerbread 上运行它时,我收到以下异常,抱怨我没有 Theme.Sherlock (或类似)的应用程序主题:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.arashpayan.prayerbook/com.arashpayan.prayerbook.PrayerBook}: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:987)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:899)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:852)
    at com.actionbarsherlock.ActionBarSherlock.setContentView(ActionBarSherlock.java:655)
    at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:316)
    at com.arashpayan.prayerbook.PrayerBook.onCreate(PrayerBook.java:44)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    ... 11 more

它抱怨的那一行(PrayerBook:44)是调用setContentView。该应用程序仅包含一个带有onCreate()我调用的方法setTheme()从顶部:

public void onCreate(Bundle savedInstanceState)
{
        setTheme(com.actionbarsherlock.R.style.Theme_Sherlock);
        super.onCreate(savedInstanceState);

        TextView rootTextView = new TextView(this);
        rootTextView.setText("Hello, world!");
        setContentView(rootTextView);

        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tab = getSupportActionBar().newTab();
        tab.setText("Prayers");
        getSupportActionBar().addTab(tab);

        tab = getSupportActionBar().newTab();
        tab.setText("Recents");
        getSupportActionBar().addTab(tab);

        tab = getSupportActionBar().newTab();
        tab.setText("Bookmarks");
        getSupportActionBar().addTab(tab);
}

我一定是主题设置不正确,但我只是不知道如何设置。有人可以帮忙吗?

UPDATE下面,CommonsWare 指出可以在 AndroidManifest.xml 中设置主题。我已经尝试过像这样:

<application android:label="@string/app_name" android:icon="@drawable/icon" android:theme="@style/Theme.Sherlock">
        <activity android:name="PrayerBook"
                  android:label="@string/app_name"
                  android:configChanges="orientation|keyboardHidden|screenLayout|uiMode|mcc|mnc|locale|navigation|fontScale|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="LanguagesActivity" />
</application>

但是 Ant 在尝试构建应用程序时给了我一个错误:

/Users/arash/coding/prayerbook/AndroidManifest.xml:7: error: Error: No resource found that matches the given name (at 'theme' with value '@style/Theme.Sherlock').

UPDATE 2在 CommonsWare 的后续评论中的帮助下,我得以让它发挥作用。我需要添加 ActionBarSherlock 作为项目依赖项。为此,

1)我删除了library-4.0.0.jar and android-support-4.0.jar从我的项目中lib目录。

2)接下来,导航到library从 github 签出的 ActionBarSherlock 目录根目录内的文件夹。类型android update project so a build.xml and proguard.cfg将为库创建文件。

3)最后,cd回到主项目目录并添加 ABS 作为库依赖项android update project --path . --library ../ActionBarSherlock/library通往--library命令中的内容会根据您查看存储库的位置而有所不同。 ActionBarSherlock 和我的应用程序的项目目录是同级目录。


通常,您在清单中设置主题,如下所示Android 开发者文档 http://developer.android.com/guide/topics/ui/themes.html#ApplyATheme(并链接到来自ActionBarSherlock 主题页面 http://actionbarsherlock.com/theming.html).

如果您想在应用程序中的任何地方使用 ActionBarSherlock,可以这样做:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Sherlock">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 Android 应用程序设置 ActionBarSherlock 主题 的相关文章

随机推荐

  • 单元测试 mocha Visual Studio Code 描述未定义

    如果我在控制台中运行 测试运行良好 mocha require ts node register tests spec ts 注意 我安装了 mocha 和 mocha g 我想从 Visual Studio Code 运行单元测试 启动
  • 如何拆分 CSV 行,使 row[0] 为名称,其余项目为元组?

    我有一个 csv 文件 其中第一列是棒球运动员的姓名 文件中的每个后续项目都是统计数据 我希望能够导入该文件 以便玩家名称等于统计数据的元组 现在 当我使用以下代码导入文件时 Orioles file Orioles csv rU for
  • Android,使可滚动视图溢出到左侧而不是右侧?

    建议我使用父视图在 TextView 中进行水平滚动
  • 如何使用 ngFor 和 bootstrap 4 创建新的一行卡片

    我正在尝试将 Bootstrap 4 的卡组功能与 Angular 一起使用ngFor 这是我现在的 HTML 但我找不到如何在插入 3 个项目后换行 div class row card group div class col 4 car
  • 附加进程时提升删除 Managed_shared_memory

    我有 2 个进程 进程 1 创建一个 boost Managed shared memory 段 进程 2 打开该段 然后进程 1 重新启动 进程 1 的启动如下 struct vshm remove vshm remove boost i
  • Zend Framework 2 - 分页

    如何获取控制器操作中的页面详细信息 我使用了专辑的分页 iteratorAdapter new Zend Paginator Adapter Iterator this gt getAlbumTable gt fetchAll pagina
  • 如何清理(防止SQL注入)SQL Server中的动态SQL?

    我们有大量依赖动态 SQL 的 SQL Server 存储过程 存储过程的参数在动态 SQL 语句中使用 我们需要在这些存储过程中使用标准验证函数来验证这些参数并防止 SQL 注入 假设我们有这些约束 我们无法重写过程以不使用动态 SQL
  • 不同语言如何在其标准库中实现排序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用similar_text()改进PHP字符串匹配?

    我正在使用 PHP 的imilar text 调用来比较两个字符串 但是 我没有得到足够好的结果 例如 对于我希望看到 100 的匹配 我得到的最好结果是 80 95 我还可以使用哪些其他函数来深入了解字符串的核心
  • GCC对读/写指令的重新排序

    Linux 的同步原语 自旋锁 互斥锁 RCU 使用内存屏障指令来强制内存访问指令重新排序 这种重新排序可以由 CPU 本身完成 也可以由编译器完成 有人可以展示一些 GCC 生成的代码示例 其中完成了此类重新排序吗 我主要对 x86 感兴
  • 如何为 Seaborn 混淆矩阵添加正确的标签

    我已经使用将数据绘制成混淆矩阵seaborn但我遇到了一个问题 问题是它只在两个轴上显示从 0 到 11 的数字 因为我有 12 个不同的标签 我的代码如下所示 cf matrix confusion matrix y test y pre
  • 如何在 MS Windows 上加载 GTK Sharp 主题

    我正在 MS Windows 上使用 Xamarin Studio 5 4 编写 GTK Sharp v2 12 应用程序 安装的Mono版本是3 2 3 但我使用 Net工具链进行编译 因为Xamarin不允许我使用Mono工具链进行编译
  • 当listview滚动时edittext设置默认值

    我有带有 edittext 的列表视图和 按钮 当我单击按钮时更改编辑文本值 例如递增 递减 当我设置值时5并滚动列表视图 将 edittext 设置值作为默认值如 0 我正在使用这种方式 public View getView final
  • 将灰度图像转换为 3 通道图像[重复]

    这个问题在这里已经有答案了 我想转换具有形状的灰度图像 height width 到具有形状的 3 通道图像 height width nchannels 这项工作是通过for loop 但一定有一个简洁的方法 这是程序中的一段代码 有人可
  • Pyspark 数据框 LIKE 运算符

    Pyspark 中 LIKE 运算符的等效项是什么 例如我想做 SELECT FROM table WHERE column LIKE somestring 寻找像这样简单的东西 但这不起作用 df select column where
  • 如何覆盖 Rails 中的路线路径助手?

    我的路线是这样定义的 match user id gt user show as gt user 如果由于某种原因传递了 nil ID 我希望路由助手仅返回 如果 ID 不为零 我希望它返回正常路径 如 user 123 或者有没有更好的方
  • 通过 PowerShell 在 Firefox 中打开 URL?

    我希望通过 Powershell 脚本在 Firefox 中打开 url 让事情变得有点困难的是 Firefox 不是默认浏览器 它是一个便携式 Firefox 版本 Edit 我的便携式 Firefox 安装似乎存在一些问题 即使将其设置
  • 文本在空间上改变线条

    我有一个列表 其中留有一些用于缩进的空间 并且还提供了虚线底层 但是 那display用于此列表的属性不匹配 导致文本在找到空格时换行 这里有一个Fiddle http jsfiddle net gsamaras cmfL2643 16 T
  • 过滤掉 HTML 标签并解析 python 中的实体

    因为正则表达式让我害怕 所以我试图找到一种方法来删除所有 HTML 标签并从 Python 中的字符串解析 HTML 实体 Use lxml http lxml de 这是 python 最好的 xml html 库 import lxml
  • 为 Android 应用程序设置 ActionBarSherlock 主题

    阅读下面的更新 2 寻找答案 我正在尝试在我的应用程序中使用 ActionBarSherlock 我查看了 4 0 0 版本项目 github 仓库 https github com JakeWharton ActionBarSherloc