you - android studio темы




Вы должны использовать тему Theme.AppCompat(или потомок) с этим действием (20)

min 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 .

Также посмотрите @ Диалоговые атрибуты в ссылке ниже

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

Android Studio 0.4.5

Документация для создания пользовательских диалоговых окон для Android: http://developer.android.com/guide/topics/ui/dialogs.html

Если вы хотите создать настраиваемый диалог, вместо использования диалоговых окон Dialog вы можете вместо этого отобразить диалоговое окно «Активность как диалог». Просто создайте действие и установите его тему в Theme.Holo.Dialog в элементе манифеста <activity> :

<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>

Создание диалогового окна вроде этого было чем-то, что я прыгал, так как я уже закончил макет.

Может ли кто-нибудь сказать мне, как я могу обойти эту проблему?


Быстрое решение.

Измените родительскую родительскую тему в styles.xml

Заменить с

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

в

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

В моем опыте проблема была в контексте, где я показал свой диалог. Внутри нажатия кнопки я создаю AlertDialog следующим образом:

builder = new AlertDialog.Builder(getApplicationContext());

Но контекст был неправильным и вызвал ошибку. Я изменил его с помощью контекста приложения следующим образом:

В разделе объявления:

Context mContext;

в методе onCreate

mContext = this;

И, наконец, в коде, где мне нужен AlertDialog:

start_stop = (Button) findViewById(R.id.start_stop);
start_stop.setOnClickListener( new View.OnClickListener()
     {
                @Override
                public void onClick(View v)
                {
                    if (!is_running)
                    {
                        builder = new AlertDialog.Builder(mContext);
                        builder.setMessage("MYTEXT")
                                .setCancelable(false)
                                .setPositiveButton("SI", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                    Task_Started = false;
                                    startTask();
                                    }
                                })
                                .setNegativeButton("NO",
                                        new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                    }
                                });
                        AlertDialog alert = builder.create();
                        alert.show();
                    }
            }
        }

Это решение для меня.


В моем случае у меня нет файлов-значений -21 в каталоге res. Затем я создал его и добавил в него следующие коды:

  <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>

Ваша деятельность расширяет ActionBarActivity, которая требует применения AppCompat.theme . Перейдите из ActionBarActivity в Activity или FragmentActivity , это решит проблему.

Если вы не используете панель действий, тогда:

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

Все, что вам нужно сделать, это добавить android:theme="@style/Theme.AppCompat.Light" в свой тег приложения в файле AndroidManifest.xml .


Для меня ни один из вышеперечисленных ответов не работал даже после того, как у меня была Theme.AppCompat качестве базовой темы для приложения. Я использовал com.android.support:design:24.1.0 Поэтому я просто изменил версию до 24.1.1 . После синхронизации градиента, его работа снова и исключение исчезло. Кажется, проблема связана с некоторыми более старыми версиями библиотек поддержки дизайна.

Просто поместите это здесь, если другие ответы не сработают для некоторых людей.


Если вам нужно расширить 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. -->

Если вы ставите основной темой своего приложения как андроид: Theme.Material.Light вместо AppTheme.Base, тогда вы получите «IllegalStateException: вам нужно использовать тему Theme.AppCompat (или потомок) с этой ошибкой активности».


Измените тему желаемого действия. Это работает для меня:

<activity
            android:name="HomeActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Theme.AppCompat.Light"
            android:windowSoftInputMode="stateHidden" />

Копирование ответа от @MarkKeen в комментарии выше, поскольку у меня была та же проблема.

У меня была ошибка, указанная в верхней части сообщения и произошла после того, как я добавил диалоговое окно с предупреждением. У меня есть вся соответствующая информация стиля в манифесте. Моя проблема была излечена путем изменения ссылки на контекст в построителе предупреждений - я изменил:

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

чтобы:

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

И больше никаких проблем.


Причина, по которой возникает эта проблема, заключается в том, что действие, которое вы пытаетесь применить к теме диалога, - это расширение ActionBarActivity которое требует применения темы AppCompat .

Обновление : расширение AppCompatActivity также будет иметь эту проблему

В этом случае измените наследование Java от ActionBarActivity к Activity и оставьте тему диалога в манифесте как есть, значение non Theme.AppCompat

Общее правило: если вы хотите, чтобы ваш код поддерживал старые версии Android, он должен иметь тему AppCompat а java-код должен расширять AppCompatActivity . Если у вас есть * деятельность, которая не нуждается в этой поддержке, например, вы заботитесь только о последних версиях и функциях Android, вы можете применить к ней любую тему, но код Java должен распространять обычную старую Activity .

ПРИМЕЧАНИЕ. Когда изменение из AppCompatActivity (или подкласса ActionBarActivity ) в Activity , также должно изменить различные вызовы с «поддержкой» на соответствующий вызов без «поддержки». Итак, вместо getSupportFragmentManager вызовите getFragmentManager .


Просто делать

new AlertDialog.Builder(this)

Вместо

new AlertDialog.Builder(getApplicationContext())

У меня был такой крах на устройствах Samsung, хотя активность действительно использовала Theme.AppCompat . Основная причина была связана со странной оптимизацией со стороны Samsung:

- 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"


У меня была и эта проблема, и что я сделал, чтобы исправить ее, и по-прежнему использую тему Holo:

сначала я заменил этот импорт:

import android.support.v7.app.AppCompatActivity;

с этим:

import android.app.Activity;

затем изменил мое расширение:

public class MyClass extends AppCompatActivity {//...

к этому:

public class MyClass extends Activity {//...

А также пришлось изменить этот импорт:

import android.support.v7.app.AlertDialog;

для этого импорта:

import android.app.AlertDialog;

а затем вы можете использовать свой тег темы в манифесте на уровне активности:

android:theme="@android:style/Theme.Holo.Dialog" />

и, наконец, (если у вас нет других классов в вашем проекте, которые должны использовать v7 appCompat), вы можете либо очистить и перестроить проект, либо удалить эту запись в файле сборки градации на уровне приложения:

compile 'com.android.support:appcompat-v7:23.2.1'

если у вас есть другие классы в вашем проекте, которые должны использовать v7 appCompat, тогда просто очистите и перестройте проект.


У меня была такая же проблема. Потому что я создавал пользовательский навигационный ящик. Но я забываю упомянуть тему в моем манифесте, подобном этому

Android: тема = "@ стиль / Theme.AppCompat.NoActionBar"

Как только я добавил указанную выше тему к моему манифесту, она решила проблему.


Это когда вам нужен 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();

Это решение сработало для меня.

Библиотека дизайна зависит от библиотек поддержки поддержки v4 и AppCompat, поэтому не используйте другую версию для appcompat и библиотеки дизайна в 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'

Это сработало для меня, я просто изменил:

final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

к этому:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

Я столкнулся с этой проблемой, хотя моя тема была AppCompat а моя активность была AppCompatActivity (или Activity , как было предложено в ответах других). Поэтому я очистил, перестроил и повторил проект.

( Build -> Clean Project, Build -> Rebuild Project, Run -> Run )

Это может показаться глупым, но теперь он отлично работает !

Просто надеюсь, что это поможет!


для меня было решение использовать ContextThemeWrapper:

private FloatingActionButton getFAB() {
Context context = new android.support.v7.view.ContextThemeWrapper(getContext(), R.style.AppTheme);
FloatingActionButton fab = new FloatingActionButton(context);
return fab;}

от Android - Как создать программу FAB?





android-studio