此活动需要使用Theme.AppCompat主题(或子代)

Android Studio 0.4.5

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

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

<活动android:theme=“@android:style/theme.Holo.Dialog”>

但是,当我尝试此操作时,出现以下异常:

java.lang.IllegalStateException:此活动需要使用Theme.AppCompat主题(或子代)

我支持以下内容,我不能使用大于10的最小值:

第10版
targetSdkVersion 19

在我的风格中,我有以下几点:

<!——基本应用程序主题--&燃气轮机;
<style name=“AppTheme”parent=“Theme.AppCompat.Light.DarkActionBar”>

在我的清单中,我有这个活动:

<应用
android:allowBackup=“true”
android:icon=“@drawable/ic_启动器”
android:label=“@string/app\u name”
android:theme=“@style/AppTheme”>
<活动
android:theme=“@android:style/theme.Holo.Light.Dialog”
android:name=“com.ssd.register.Dialog\u更新”
android:label=“@string/title\u activity\u dialog\u update”>
&lt/活动>

像这样创建对话框是我急于要做的事情,因为我已经完成了布局

有人能告诉我怎样才能避开这个问题吗

出现此问题的原因是,您尝试应用对话框主题的活动正在扩展ActionBarActivity,这需要应用AppCompat主题

更新:扩展AppCompatActivity也会出现此问题

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


一般规则是,如果您希望您的代码支持旧版本的Android,它应该具有AppCompat主题,java代码应该扩展AppCompatActivity。如果您的*活动不需要此支持,例如您只关心Android的最新版本和功能,您可以对其应用任何主题,但java代码必须扩展纯旧的活动


注意:当从AppCompatActivity(或子类ActionBarActivity)更改为Activity时,还必须将带有“支持”的各种调用更改为不带“支持”的相应调用。因此,请调用getFragmentManager,而不是getFragmentManager

发表评论