我有一个扩展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。
答案 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
下载支持库
将库项目导入工作区。可以找到@
sdk>/extras/android/support/v7/appcompat/
导入后
右键单击您的Android项目。转到属性。选择Android。单击“添加”,然后选择AppCompact
。单击确定。成功后你应该看到一个绿色的勾号。
参考后
你已经完成了。
答案 1 :(得分:0)
使用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;行。