在为Android 2.3及更高版本实现Action Bar支持v7库时,应用程序崩溃

时间:2013-07-30 16:12:44

标签: android android-actionbar android-support-library android-actionbar-compat

我已经在Eclipse中成功创建了一个应用程序,它适用于Android 4.0及更高版本。现在我想让它兼容Android 2.3及更高版本。在我的应用程序中,我使用了操作栏,因此我在工作区的工作集中添加了android-support-v7-appcompat库项目。遵循http://developer.android.com/tools/support-library/setup.html指令后,现在我的项目Android私有库部分中有'android-support-v7-appcompat.jar'和'android-support-v4.jar'。我还有我的项目的libs文件夹下的jar文件。

在我的主要活动中,我已导入:

import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;

在AndroidManifest.xml文件中,我声明了:

<application android:allowBackup="true" 

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

此外,对于不同的活动,声明为:

 <activity android:
                 android:uiOptions="splitActionBarWhenNarrow"

以前我的AndroidManifest.xml是这样的:

<application android:allowBackup="true" 

        android:theme="@style/<theme>"

和res&gt; values文件夹下的styles.xml是这样的:

    <resources xmlns:android="http://schemas.android.com/apk/res/android">

       <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
       -->
       <style name="<base>" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
        </style>

        <!-- Application theme. -->
       <style name="<theme>" parent="<base>">
        <!-- All customizations that are NOT specific to a particular API-level can go      here. -->
    </style>

</resources>

使用

  <style name="<base>" parent="android:Theme.Holo.Light">
            <!-- API 11 theme customizations can go here. -->
        </style> 

在values-v11文件夹和

<style name="<base>" parent="android:Theme.Holo.Light.DarkActionBar">
            <!-- API 11 theme customizations can go here. -->
        </style> 

在values-v14文件夹中。

我现在已将库项目中的所有styles_base.xml和themes_base.xml文件包含到我的项目中。还通过将Theme替换为。

来更改styles.xml文件

每次我运行应用程序时,我都会面临崩溃,现在甚至是4.0及更高版本的Android版本。消息:

 java.main.NoClassDefFounderError: android.support.v7.appcompat.R$styleable
    at android.support.v7.app.ActionBarActivityDelegate.onCreate

请帮助。

1 个答案:

答案 0 :(得分:4)

确保在项目属性中检查兼容性库 - &gt; Java构建路径 - &gt;订单和导出部分如下:

enter image description here

否则它们将不会包含在生成的APK中。

修改

我认为你应该重新开始,因为你真的不应该将这些XML从支持lib添加到你自己的项目中。

  1. 从支持lib
  2. 中删除所有XML和jar
  3. 根据您提供的链接重建新的Android库项目(按照“使用资源添加库”说明)
  4. 将Android库项目添加到您的项目
  5. 清理并重建项目