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
。
最小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"。
也可以看一下下面链接中的对话框属性
注意:我本来想把这个问题作为答案,但进一步测试发现,用命令行的maven构建时仍然失败,所以我不得不把它编辑为一个问题! :-(
在我的案例中,当我得到这个错误时,我已经在使用AppCompat主题,这个错误没有什么意义。
我正在对我的安卓系统进行mavenizing构建。我已经依赖apklib和jar版本的App Compat,因此。
<!-- See https://github.com/mosabua/maven-android-sdk-deployer -->
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7-appcompat</artifactId>
<version>${compatibility.version}</version>
<type>apklib</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7-appcompat</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v4</artifactId>
</dependency>
现在,当我导入maven项目并从IntelliJ中构建和运行时,一切正常。
但当我用maven从命令行构建和部署并运行时,还是会出现这种异常。