在没有获取 java.lang.IllegalStateException 的情况下使用 ActionBarActivity:您需要将 Theme.AppCompat 主题(或后代)与此 activity 一起使用

Using ActionBarActivity without getting java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

我已经看到很多关于这个错误的问题,但似乎没有一个能解决我的问题。我正在尝试将这种服装风格用于 "style-v21"

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- inherit from the material theme -->
    <style name="AppTheme" parent="">
        <!-- Main theme colors -->
        <!--   your app branding color for the app bar -->
        <item name="android:colorPrimary">@android:color/holo_orange_dark</item>
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="android:colorPrimaryDark">@android:color/holo_orange_dark</item>
        <!--   theme UI controls like checkboxes and text fields -->
        <item name="android:colorAccent">@android:color/holo_orange_dark</item>

        <item name="android:navigationBarColor">@android:color/holo_orange_dark</item>
    </style>
</resources>

当应用程序尝试运行时,我在 logcat 中收到此消息

 Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

正如其他类似问题的答案所述,您可以将使用此视图的 Activity 从 ActionBarActivity 切换为 Activity。这确实解决了错误,但我将如何使用 onOptionItemSelected 和其他允许您与操作栏交互的方法。

这是我最主要的`

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"

        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

`

有什么方法可以同时使用样式和 ActionBarActivity 而不会出现此错误。

I get this message in my logcat when the app tries to run

而不是 parent="",使用 parent="Theme.AppCompat"(或 Theme.AppCompat 的其他 sub-theme,例如 Theme.AppCompat.Light)。

您还需要修复您的主题以从项目中删除 android: 命名空间,因为 appcompat-v7 不使用 android: 命名空间(而本机操作栏使用) .

This does solves the error but how would I use onOptionItemSelected and other methods that allow you to interact with the action bar.

自 API 级别 11 以来,操作栏已成为标准 Android 的一部分。您无需使用 appcompat-v7 即可拥有操作栏并使用 onOptionsItemSelected() 和亲。

Also when I change the activity style to Theme.AppCompat It takes away my theme that I want to keep, so I would like to avoid using that.

我再说一遍:将 parent="" 更改为使用 Theme.AppCompat 作为 parent。