【问题标题】:working on 4.0.3 and 4.1 but Error on 2.1,2.2 and 2.3 - Sherlock Action Bar在 4.0.3 和 4.1 上工作,但在 2.1、2.2 和 2.3 上出错 - Sherlock 操作栏
【发布时间】:2013-06-07 13:37:56
【问题描述】:

我正在学习 Sherlock Action Bar 的一个简单教程。我遵循了每一步。问题是我在 2.1 到 2.3 版本上遇到错误,而在 4.0 到 4.1 版本上工作正常。
我正在使用 Android SDK 工具 20.0.3 和 Eclipse 版本 4.2.0

setContentView(R.layout.activity_main);

在上面的代码中它写着R cannot be resolved to a variable。 还有一些错误如下:

 [2012-09-04 22:18:21 - Action Bar demo] C:\Users\Karthick\Desktop\Project libs\JakeWharton-ActionBarSherlock-88fc341\library\res\values-v14\abs__styles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Holo.ActionBar'.
    [2012-09-04 22:18:21 - Action Bar demo] C:\Users\Karthick\Desktop\Project libs\JakeWharton-ActionBarSherlock-88fc341\library\res\values-v14\abs__styles.xml:6: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Holo.ActionBar.Solid'.
    [2012-09-04 22:18:21 - Action Bar demo] C:\Users\Karthick\Desktop\Project libs\JakeWharton-ActionBarSherlock-88fc341\library\res\values-v14\abs__styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Holo.Light.ActionBar'.
    [2012-09-04 22:18:21 - Action Bar demo] C:\Users\Karthick\Desktop\Project libs\JakeWharton-ActionBarSherlock-88fc341\library\res\values-v14\abs__styles.xml:10: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Holo.Light.ActionBar.Solid'.

为了更好地理解,这里有一些图片:

我的清单文件是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.action.bar"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Sherlock" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Google"></activity>
</application>  

有人帮助我修复 Android 2.3 中的这些错误

相同的代码在 Android 4.0.3 中运行良好

【问题讨论】:

  • 我认为@Kaediil 是正确的:将项目的构建目标更改回 4.0.3 或更高版本。无法解决R 的原因是由于 Gingerbread 中没有 Holo 主题相关样式,您的资源将无法编译。构建目标与您的应用程序将兼容的设备无关;这一切都在清单中用 min/maxSdkVersion 定义。
  • @MH 所以这里是 Android 4.0.3 的屏幕截图twitpic.com/ar41l2/full。没有错误!!
  • @MH 我应该如何处理与 Holo 主题相关的样式?通过将 Android 项目设置为 4.0.3 是否可以在 2.3 设备上运行??
  • 不要直接使用 Holo 主题和样式,而是使用 ActionBarSherlock 提供的主题。这将默认为 ICS+ 上的本机资源,但在旧平台上包含这些资源。请注意,ABS 仅向后移植 ActionBar 所需的 Holo 主题/样式。查看 HoloEverwhere 项目以获得完整的反向移植。
  • 谢谢@MH先生。我现在明白了:)

标签: android android-actionbar actionbarsherlock


【解决方案1】:

问题是我在 2.1 到 2.3 版本上遇到错误并且正在工作 4.0 到 4.1 都可以。

=> 正如您所提到的,这在 4.0 和 4.1 中运行良好,但在 2.x 版本中无法正常工作,我确定您忘记在 style.xml 中包含兼容的 ActionBarSherlock 主题:

如果您没有将 styles.xml 包含在以下值中,请执行以下操作:

<style name="AppTheme" parent="Theme.Sherlock.Light.DarkActionBar"/>

正如您在上面提到的关于styles.xml 的values-v11 和values-v14,您可以在两个文件夹中使用以下值创建styles.xml:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"/>

【讨论】:

    【解决方案2】:

    当我看到你的屏幕截图时,我有点困惑。首先,您的项目应该使用 Android 4.0.3,而不是 Android 库中的 2.3。您已经在清单中使用 minSDKVersion 行覆盖了 2.3。其次,我不太清楚,但我假设在您项目的属性中,您让主项目依赖于 ActionBarSherlock 库?

    【讨论】:

    • 是的,我使用的是 Android 4.0.3,项目中没有错误。然后我将构建目标更改为 Android 2.3.3 以支持 Gingerbread 设备。您说“您已经在清单中使用 minSDKVersion 行覆盖了 2.3。”我怀疑它是否可以在 2.3 设备上运行而无需将构建目标更改为 Android 2.3???
    • 是的,只要您不使用任何不在 2.3 中的 API 调用,它就可以在 2.3 设备上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2015-06-27
    • 2012-07-26
    相关资源
    最近更新 更多