このアクティビティではTheme.AppCompatテーマ(またはその子孫)を使用する必要があります。質問する

このアクティビティではTheme.AppCompatテーマ(またはその子孫)を使用する必要があります。質問する

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継承をからに変更しActionBarActivityActivityマニフェストのダイアログテーマはそのままにして、値のないものにしておきますTheme.AppCompat


一般的なルールとして、コードで古いバージョンの Android をサポートする場合は、テーマを追加しAppCompat、Java コードで を拡張するAppCompatActivity必要があります。Android の最新バージョンと機能のみに関心がある場合など、このサポートを必要としないアクティビティがある場合は、任意のテーマを適用できますが、Java コードは単純な古い を拡張する必要がありますActivity


AppCompatActivity注意: を(またはサブクラス)から に変更する場合ActionBarActivity、 では、「サポート」のあるさまざまな呼び出しを「サポート」のないActivity対応する呼び出しに変更する必要もあります。したがって、 の代わりにを呼び出しますgetSupportFragmentManagergetFragmentManager

おすすめ記事