扩展ActionBarActivity导致错误

时间:2014-03-27 09:42:15

标签: android android-actionbar fragment

我有一个扩展FragmentActivity并导入android库v4的类。现在我想在我的活动中实现Navigation Drawer,我想扩展ActionBarActivity。而且由于ActionBarActivity也实现了FragmentActivity,我已经被告知我仍然可以在我的班级中使用ActionBarActivity片段。

所以我开始使用ActionBarActivity,首先导入v7库。我从

复制了文件
  

C:\ Program Files \ Android Developer Tools \ sdk \ extras \ android \ support \ v7

到我工作区的app文件夹中的libs文件夹。

现在我的Eclipse检测到我的类扩展ActionBarActivity没有错误。但是,当我运行它时,它会崩溃。

这里有一些在我的LogCat上发现的信息(我想知道它是否可以随时提供帮助):

03-27 16:30:12.113: E/AndroidRuntime(8130): FATAL EXCEPTION: main
03-27 16:30:12.113: E/AndroidRuntime(8130): Process: com.anggrian.readee, PID: 8130
03-27 16:30:12.113: E/AndroidRuntime(8130): java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:107)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at com.anggrian.readee.MainActivity.onCreate(MainActivity.java:37)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.Activity.performCreate(Activity.java:5231)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.ActivityThread.access$800(ActivityThread.java:145)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.os.Looper.loop(Looper.java:136)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at android.app.ActivityThread.main(ActivityThread.java:5081)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at java.lang.reflect.Method.invoke(Method.java:515)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-27 16:30:12.113: E/AndroidRuntime(8130):     at dalvik.system.NativeStart.main(Native Method)

我想知道我是否可以得到任何帮助,谢谢!

@Raghunandan这里是我的styles.xml:

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

    -->
    <style name="AppBaseTheme" 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="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

    <!-- MY OWN THEME -->
    <style name="DarkGreyTheme" parent="@android:style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/DarkGreyActionBar</item>
    </style>

    <style name="DarkGreyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#b6b6b6</item>
    </style>

    <!-- MY OWN THEME -->
    <style name="OrangeTheme" parent="@android:style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/OrangeActionBar</item>
    </style>

    <style name="OrangeActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#ff6400</item>
    </style>

</resources>

AppMan不在AndroidManifest.xml中使用,所以请忽略它们。我曾经在我的自定义主题中使用@android:style / Theme.Holo.Light,但由于我已经在我的主类中扩展了ActionBarActivity,因此LogCat表明我需要使用AppCompat Theme。

4 个答案:

答案 0 :(得分:4)

  

java.lang.NoClassDefFoundError:   android.support.v7.appcompat.R $设置样式

AppCompat是一个包含资源的图书馆项目。您需要在Android项目中引用AppCompat

您也可以检查一下之前我回答过的类似问题。现在找到它

No resource found that matches the given name '@style/Theme.AppCompat.Light'

您可以按照以下链接中的添加资源库的步骤进行操作

https://developer.android.com/tools/support-library/setup.html

从sdk manager

下载支持库

enter image description here

将库项目导入工作区。可以找到@

sdk>/extras/android/support/v7/appcompat/

导入后

enter image description here

右键单击您的Android项目。转到属性。选择Android。单击“添加”,然后选择AppCompact。单击确定。成功后你应该看到一个绿色的勾号。

参考后

enter image description here

你已经完成了。

答案 1 :(得分:0)

enter image description here使用Java Build Path

添加支持库jar

答案 2 :(得分:0)

在Eclipse中:文件 - &gt; 导入 - &gt; 现有Android代码到工作区 - &gt; 下一步即可。转到浏览并找到项目&#34; C:\ Program Files \ Android Developer Tools \ sdk \ extras \ android \ support \ v7&#34; (在你的情况下)并导入它。 然后右键单击您的项目 - &gt;的属性即可。转到左上角的 Android 部分。在名为&#34; 图书馆&#34;的底部窗口中点击添加,然后选择您刚刚导入的支持项目。

请务必从ActionBar而不是import android.support.v7.app.ActionBarActivity导入import android.app.ActionBar

答案 3 :(得分:0)

我遇到了同样的问题并且尝试了很多东西(主题,导入外部appcompat jar等) 唯一一个对我有帮助:
1)手动将android-support-v4.jar和android-support-v7-appcompat.jar复制到项目的lib文件夹中;
2)右键单击项目 - &gt;属性 - &gt;图书馆 - &gt;添加JAR(不是外部罐子) - &gt;从lib文件夹中选择jar(我们在步骤1中复制) - &gt;订单和出口点按 - &gt;取消选中旧的支持库并选中我们刚刚添加的new。 - &GT;行。

相关问题