theme - android values v21




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

Androidスタジオ0.4.5

カスタムダイアログボックスを作成するためのAndroidドキュメント: http://developer.android.com/guide/topics/ui/dialogs.html : 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>

このようなダイアログボックスを作成することは、既にレイアウトを完了しているので、私がやりたいことでした。

誰も私がこの問題を回避する方法を教えてもらえますか?


ActionBarActivityを拡張する必要がある場合は、style.xmlに必要です。

<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->

AppTheme.Baseの代わりにandroid:Theme.Material.Lightとしてアプリケーションのメインテーマとして設定すると、 "IllegalStateException:このアクティビティでTheme.AppCompatテーマ(または子孫)を使用する必要があります"というエラーが発生します。


Androidのマニフェストでは、アクティビティのテーマをAppThemeのコードスニペットに従って変更してください

<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
</activity>

SectionsPagerAdapterとViewPager&Fragmentを使った私の活動

public class MyActivity extends AppCompatActivity implements ActionBar.TabListener
...
...
     @Override
        public void onPostResume(){
            super.onPostResume();
            try {
               getSupportActionBar().setDisplayShowTitleEnabled(false);
            }catch (NullPointerException ignored){
            }
        }

min sdkは10ですActionBarはAPIレベル11から使用できます。したがって、10の場合、 Theme.AppCompatまたはその子孫を使用する必要があるサポートライブラリのAppCompatを使用します。

つかいます

android:theme="@style/Theme.AppCompat" >

または、アクションバーを最上部に表示したくない

android:theme="@style/Theme.AppCompat.NoActionBar">

さらに詳しい情報@

http://developer.android.com/guide/topics/ui/actionbar.html

編集:

私は誤った操作の投稿をしている可能性があります。

opがアクティビティテーマを持つダイアログを必要としているようです。 既にBobbake4によって提案されているように、 ActionBarActivityではなくActivityを拡張しActionBarActivity

また、下のリンクの@Dogogogue属性を見てください

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/


あなたのアクティビティはActionBarActivityを拡張しているため、 AppCompat.themeを適用する必要があります。 ActionBarActivityからActivityまたはFragmentActivityに変更すると、問題が解決されます。

アクションバーを使用しない場合:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" 

あなたのスタイルに行き、親を入れる

parent="Theme.AppCompat"

の代わりに

parent="@android:style/Theme.Holo.Light"

このアクティビティでTheme.AppCompatを使用したにも関わらず、 サムスンのデバイスでクラッシュしました 。 根本的な原因は三星側の奇妙な最適化に関連していた:

- if one activity of your app has theme not inherited from Theme.AppCompat
- and it has also `android:launchMode="singleTask"`
- then all the activities that are launched from it will share the same Theme

私のソリューションはandroid:launchMode="singleTask"削除するだけでしたandroid:launchMode="singleTask"


このソリューションは私のために働いた。

デザインライブラリはサポートv4とAppCompatサポートライブラリに依存しているため、appcompatとdesignライブラリに異なるバージョンをgradleで使用しないでください。

つかいます

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.0.0'

の代わりに

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.1.0'

これは、フラグメントにAlertDialogが必要な場合です

            AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
            adb.setTitle("My alert Dialogue \n");
            adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                  //some code

            } });
            adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                 dialog.dismiss();

                } });
            adb.show();

これは私のために修正されました。マニフェストでテーマを指定するのではなく、 ActionBarActivityを拡張する各アクティビティに対してonCreateで定義しました。

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.MyAppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity_layout);
...
}

MyAppThemeMyAppThemeの子孫でTheme.AppCompat 、xmlで定義されています。 テーマは、 super.onCreatesetContentView前に設定する必要があります。


これは私のために働いた:

<application
           android:allowBackup="true"
           android:icon="@mipmap/ic_launcher"
           android:label="@string/app_name"
           android:theme="@style/AppTheme" >
           <activity
               android:name=".MainActivity"
               android:label="@string/app_name"
               android:theme="@style/Theme.AppCompat.NoActionBar">

               <intent-filter>
                   <action android:name="android.intent.action.MAIN" />

                   <category android:name="android.intent.category.LAUNCHER" />
               </intent-filter>
           </activity>
</application>

そのエラーに対する多くの解決策があります。

  1. ActionbarActivityまたはAppCompatActivityの代わりにActivityまたはFragmentActivityを使用する必要があります

  2. ActionbarActivityまたはAppCompatActivityを使用する場合は、 styles.xml Theme.Holo.xxxxTheme.AppCompat.Lightに変更する必要があります(必要に応じてDarkActionbarに追加してください

アクションバーやAppCompatに関する高度な属性が必要ない場合は、アクションバーやAppCompatを使用する必要はありません。


クイックソリューション。

styles.xmlのベーステーマの親を変更する

からの置換

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<style name="AppTheme" parent="Theme.AppCompat">

以前のsdkバージョンのマテリアルデザインを以前のsdkバージョンの21に適用したいので、これが来たのですAppThemeAppTheme必要とするため、AppThemeについて独自のカスタマイズをしたくない場合は、styles.xmlを変更するだけです(前のSDK 21)このように、App Compatテーマを継承することができます。

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

このため:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

私が同じ問題を抱えていたので、上記のコメントの@MarkKeenからの回答をコピーする。

私は、投稿の先頭にエラーが表示されていて、警告ダイアログを追加した後に起こった。 マニフェストに関連するすべてのスタイル情報があります。 私の問題はアラートビルダーの文脈参照を変更することで解決しました - 私は変更しました:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

に:

new android.support.v7.app.AlertDialog.Builder(this)

それ以上の問題はありません。


私にとっては、アプリケーションのベーステーマとしてTheme.AppCompatした後でも、上記の答えはどれもTheme.AppCompatませんでした。 私はcom.android.support:design:24.1.0を使用してcom.android.support:design:24.1.0ので、バージョンを24.1.1変更し24.1.1 。 gradle同期の後、再び動作し、例外はなくなった。 私には、デザインサポートライブラリのいくつかの古いバージョンで問題が発生していたようです。

他の人の回答がうまくいかない場合に備えて、ここに入れてください。



私の場合は、私のresディレクトリに値 - v21ファイルがありません。 それから私はそれを作成し、コードに次のように追加しました:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

私はこの同じ問題を抱えていた。 私はカスタムナビゲーションドロワーを作成していたので。 しかし、私はこのような私のマニフェストでテーマを言及することを忘れて

android:theme = "@ style / Theme.AppCompat.NoActionBar"

まもなく、上記のテーマを私のマニフェストに追加して、問題を解決しました。


私は同じ問題を抱えていましたが、これをマニフェストに入れて解決しました:android:theme = "@ style / Theme.AppCompat。

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name_test"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat">

        ...    

    </application>




android-studio