このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
Android Studio 0.4.5
カスタムダイアログボックスを作成するためのAndroidドキュメント: http://developer.android.com/guide/topics/ui/dialogs.html
カスタムダイアログが欲しい場合、Dialog APIを使わずに、アクティビティをダイアログとして表示することができます。アクティビティを作成して、そのテーマをTheme.Holo.Dialogに設定するだけです。 マニフェスト要素でテーマを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
以下のようなサポートをしているのですが、minに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>
このようなダイアログボックスの作成は、すでにレイアウトが完成しているので、やりたいと思っていたことでした。
どなたか、この問題を回避する方法を教えてください。
945
3
この問題が発生するのは、ダイアログテーマを適用しようとしているアクティビティが、
ActionBarActivity
を拡張しているためで、AppCompat
テーマを適用する必要があります。更新:AppCompatActivity "を拡張した場合もこの問題が発生します。
この場合、Javaの継承を
ActionBarActivity
からActivity
に変更し、マニフェスト内のダイアログテーマをそのままにします(Theme.AppCompat
ではない値)。一般的なルールとしては、コードを古いバージョンのAndroidに対応させたい場合は、
AppCompat
のテーマを持ち、JavaコードはAppCompatActivity
を拡張する必要があります。Androidの最新バージョンや機能にしか興味がないなど、このサポートを必要としない*アクティビティがある場合は、どんなテーマを適用しても構いませんが、Javaコードは普通のActivity
を拡張しなければなりません。注意:
AppCompatActivity
(またはサブクラスのActionBarActivity
)からActivity
に変更する際には、"support "を含む様々なコールを、"support "を含まない対応するコールに変更する必要があります。 つまり、getSupportFragmentManager
の代わりに、getFragmentManager
を呼び出します。最小のSDKは10です。ActionBar "はapiレベル11から利用可能です。つまり、10の場合は、サポートライブラリの
AppCompat
を使用することになり、そのためにはTheme.AppCompat
またはその子孫を使用する必要があります。使用方法
また、上部にアクションバーを設置したくない場合は
詳細はこちら
http://developer.android.com/guide/topics/ui/actionbar.html
Edit:
私はop記事を読み違えたかもしれません。
作者はアクティビティをテーマにしたダイアログを望んでいるようです。そこで、Bobbake4さんがすでに提案されているように、
ActionBarActivity
ではなく、Activity
を拡張してみましょう。また、以下のリンクでDialog Attributesを見てみてください。
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/
注:これは回答のつもりだったのですが、さらにテストしたところ、コマンドラインからmavenを使ってビルドするとまだ失敗することがわかりましたので、問題点として編集することにしました! :-(
私の場合、このエラーが出たときにはすでにAppCompat Themeを使用していたので、このエラーはあまり意味がありませんでした。
私はアンドロイドのビルドをmavenizeしている最中でした。AppCompatのapklibとjarバージョンにすでに依存していました。
さて、mavenプロジェクトをインポートして、IntelliJからビルドして実行すると、うまくいきます。
しかし、ビルドしてデプロイし、コマンドラインからmavenを使って実行すると、やはりこの例外が発生します。