Android Studio 0.4.5
カスタム ダイアログ ボックスを作成するための Android ドキュメント:詳しくは、http://developer.android.com/guide/topics/ui/dialogs.html をご覧ください。
カスタム ダイアログが必要な場合は、Dialog 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">
私のマニフェストには、アクティビティについて次のように書かれています:
<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>
レイアウトはすでに完成していたので、このようなダイアログ ボックスを作成することは、私がやりたいと思っていたことでした。
この問題を回避する方法を教えてもらえますか?
ベストアンサー1
この問題が発生する理由は、ダイアログ テーマを適用しようとしているアクティビティが拡張されており、テーマの適用がActionBarActivity
必要であるためです。AppCompat
更新: 拡張するとAppCompatActivity
この問題も発生します
この場合、Java継承をからに変更しActionBarActivity
、Activity
マニフェストのダイアログテーマはそのままにして、値のないものにしておきますTheme.AppCompat
。
一般的なルールとして、コードで古いバージョンの Android をサポートする場合は、テーマを追加しAppCompat
、Java コードで を拡張するAppCompatActivity
必要があります。Android の最新バージョンと機能のみに関心がある場合など、このサポートを必要としないアクティビティがある場合は、任意のテーマを適用できますが、Java コードは単純な古い を拡張する必要がありますActivity
。
AppCompatActivity
注意: を(またはサブクラス)から に変更する場合ActionBarActivity
、 では、「サポート」のあるさまざまな呼び出しを「サポート」のないActivity
対応する呼び出しに変更する必要もあります。したがって、 の代わりにを呼び出します。getSupportFragmentManager
getFragmentManager