你需要在这个活动中使用一个Theme.AppCompat主题(或其后代)。

Android Studio 0.4.5

创建自定义对话框的Android文档:http://developer.android.com/guide/topics/ui/dialogs.html

如果你想要一个自定义的对话框,你可以将一个活动显示为对话框,而不是使用对话框API。只需创建一个活动,并将其主题设置为Theme.Holo.Dialog,在 <activity>的清单元素中设置其主题为Theme.Holo.Dialog。

<activity android:theme="@android:style/Theme.Holo.Dialog" >

然而,当我尝试这样做的时候,我得到了以下异常。

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

我正在支持以下内容,我不能使用大于10的东西作为最小值。

minSdkVersion 10
targetSdkVersion 19

在我的样式中,我有以下内容。

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

而在我的清单中,我的活动有这样的内容。

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:theme="@android:style/Theme.Holo.Light.Dialog"
            android:name="com.ssd.register.Dialog_update"
            android:label="@string/title_activity_dialog_update" >
        </activity>

创建这样的对话框是我希望做的事情,因为我已经完成了布局。

谁能告诉我怎样才能解决这个问题?

解决办法

你遇到这个问题的原因是,你试图应用对话框主题的活动扩展了ActionBarActivity,它需要应用AppCompat主题。

Update:扩展AppCompatActivity也会出现这个问题

在这种情况下,将Java继承从ActionBarActivity改为Activity,并将清单中的对话主题保持原样,即非Theme.AppCompat


一般的规则是,如果你想让你的代码支持旧版本的Android,它应该有AppCompat主题,java代码应该扩展AppCompatActivity。如果你有*个不需要这种支持的活动,比如你只关心Android的最新版本和功能,你可以对它应用任何主题,但java代码必须扩展普通的Activity


注意:当从AppCompatActivity(或子类ActionBarActivity)变为Activity时,也必须将带有"支持"的各种调用改为相应的调用*没有"支持"。 所以,不要用getSupportFragmentManager,而要用getFragmentManager

评论(25)

最小sdk为10。ActionBar'可以从api级别11开始使用。因此,对于10级,你将使用支持库中的AppCompat',为此你需要使用`Theme.AppCompat'或其后代。

使用

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

或者如果你不希望行动栏在顶部

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

更多信息 @

http://developer.android.com/guide/topics/ui/actionbar.html

编辑。

我可能看错了操作帖。

似乎op想要一个带有活动主题的对话框。所以按照Bobbake4的建议,扩展 "Activity "而不是 "ActionBarActivity"。

也可以看一下下面链接中的对话框属性

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/

评论(8)

注意:我本来想把这个问题作为答案,但进一步测试发现,用命令行的maven构建时仍然失败,所以我不得不把它编辑为一个问题! :-(

在我的案例中,当我得到这个错误时,我已经在使用AppCompat主题,这个错误没有什么意义。

我正在对我的安卓系统进行mavenizing构建。我已经依赖apklib和jar版本的App Compat,因此。



            android.support
            compatibility-v7-appcompat
            ${compatibility.version}
            apklib



            android.support
            compatibility-v7-appcompat
            jar



            android.support
            compatibility-v7
            jar



            android.support
            compatibility-v4

现在,当我导入maven项目并从IntelliJ中构建和运行时,一切正常。

但当我用maven从命令行构建和部署并运行时,还是会出现这种异常。

评论(0)