当前位置: 首页 > 知识库问答 >
问题:

您需要使用具有此activity的theme.AppCompat主题(或后代)

高夜洛
2023-03-14

Android Studio 0.4.5

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

如果需要自定义对话框,则可以将activity显示为对话框,而不是使用对话框API。只需创建一个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">

在我的舱单上,我给activity写了一个:

 <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>

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

谁能告诉我怎样才能避开这个问题?

共有3个答案

阳博赡
2023-03-14

在上面的评论中复制@markkeen的答案,因为我也有同样的问题。

我有错误声明在顶部的帖子和发生后,我添加了一个警报对话框。我在舱单中有所有相关的样式信息。通过更改alert builder中的上下文引用解决了我的问题--我更改了:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

致:

new android.support.v7.app.AlertDialog.Builder(this)

不再有问题了。

方嘉志
2023-03-14

您只需将androidmanifest.xml文件中的android:theme=“@style/theme.appcompat.light”添加到应用程序标记中。

万俟棋
2023-03-14

出现此问题的原因是,您试图应用dialog主题的activity正在扩展ActionBarActivity,这需要应用AppCompat主题。

更新:扩展appcompattivity也会有此问题

在这种情况下,将Java继承从ActionBarActivity更改为activity,并将对话框主题保留在清单中,不是theme.AppCompat

一般规则是,如果您希望您的代码支持较旧版本的Android,那么它应该具有AppCompat主题,并且Java代码应该扩展AppCompatity。如果你有*一个不需要这种支持的activity,比如你只关心Android的最新版本和功能,你可以对它应用任何主题但Java代码必须扩展纯旧的activity

注意:从AppCompattivity(或子类ActionBaractivity)更改为activity时,必须将具有“支持”的各种调用更改为不具有“支持”的相应调用。因此,调用GetSupportFragmentManager而不是GetFragmentManager

 类似资料: