【问题标题】:extending ActionBarActivity causing error扩展 ActionBarActivity 导致错误
【发布时间】:2014-05-06 04:33:24
【问题描述】:

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

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

复制了文件

C:\Program Files\Android 开发者工具\sdk\extras\android\support\v7

到工作区上我的应用程序文件夹中的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 这是我的 style.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>

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

【问题讨论】:

  • 您使用什么 IDE?无需将任何内容复制到 libs 文件夹。
  • Eclipse,否则推荐什么方法将库导入到app项目文件夹中的libs文件夹中
  • 你是否在 libs 文件夹中添加了 jar 文件
  • @Anggrian 在我的帖子中已经提到,链接也有快照

标签: android android-actionbar fragment


【解决方案1】:

java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable

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 项目。转到属性。选择安卓。单击添加并选择AppCompact。单击确定。成功后您应该会看到一个绿色的勾号。

参考后

你已经完成了。

【讨论】:

  • 我按照您链接中的说明进行操作,我很确定我以正确的方式导入了 lib,并且 Eclipse IDE 没有检测到错误。但是当我运行应用程序时它崩溃了
  • @Anggrian 不可能是您遵循了所有步骤但仍然出现错误。你没有正确地遵循它。并使用@ 来解决您评论中的特定用户
  • @Anggrian 请检查快照。如果你做对了,那将 100% 毫无疑问
  • 正如我之前所说,我已经按照您链接中的说明进行操作,我认为这与您通过屏幕截图提供的说明相同。但是我收到了这个错误,我无法构建项目或运行应用程序:imgur.com/M4xe6J9
  • @Anggrian 不,你不会得到错误。将 appcompat 从 sdk&gt;/extras/android/support/v7/appcompat/ 复制到你的 androdi 项目所在的文件夹。然后导入eclipse,然后引用同样的。
【解决方案2】:

在 Eclipse 中:文件->导入->现有 Android 代码到工作区-> 下一步。转到 Browse 并找到项目“C:\Program Files\Android Developer Tools\sdk\extras\android\support\v7”(在您的情况下)并导入它。 然后右键单击您的项目 -> Properties。转到左上角的 Android 部分。在名为“Library”的底部窗口中,单击Add 并选择您刚刚导入的支持项目。

确保从import android.support.v7.app.ActionBarActivity 导入ActionBar,而不是从import android.app.ActionBar

【讨论】:

    【解决方案3】:

    使用 Java 构建路径添加支持库 jar

    【讨论】:

    • v7 库已经在 J​​ava Build Path 中的 Android Private Library 下
    • 感谢您的图片,我勾选了 lib v7,但在运行应用程序时它仍然让我崩溃
    • @Anggrian 关注此developer.android.com/tools/support-library/setup.html,它将起作用。您也可以查看我帖子中的链接
    • 我确实按照说明进行操作,现在我的 IDE 没有检测到错误,但仍然在应用程序中崩溃,并出现与上面显示的 LogCat txt 相同的错误
    【解决方案4】:

    我遇到了同样的问题并尝试了很多东西(主题、导入外部 appcompat jar 等)。
    唯一对我有帮助的人:
    1)手动将android-support-v4.jar和android-support-v7-appcompat.jar复制到项目的lib文件夹中;
    2)右键单击项目->属性->库->添加JAR(不是外部jar)->从lib文件夹中选择jar(我们在步骤1中复制)->订购和导出点击->取消选中旧支持库并检查我们刚刚添加的新的。 -> 好的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多