Я получаю RuntimeException на Android 2.3.5 , но я буду с помощью Theme.AppCompat (RES / значения / themes.xml). Это телефон: http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php
<!-- res/values/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Styled" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/QueryActionBar</item>
<item name="android:actionBarStyle">@style/QueryActionBar</item>
</style>
<style name="QueryActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/blueback</item>
<item name="android:background">@color/blueback</item>
<item name="backgroundSplit">@color/blueback</item>
<item name="android:backgroundSplit">@color/blueback</item>
</style>
</resources>
Вот файл значений-v11.
<!-- res/values-v11/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="QueryTheme" parent="@android:style/Theme.Holo">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
Вот ошибка.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Извините, ребята, у меня также есть android: theme = "@ style / Theme.Styled", определенный в AndroidManifest.xml.
Theme.Styled
?Ответы:
Если вы расширяете ActionBarActivity в своем MainActivity, вам также придется изменить родительскую тему в values-v11.
Таким образом, style.xml в values-v11 будет -
РЕДАКТИРОВАТЬ: Я бы порекомендовал вам прекратить использовать ActionBar и начать использовать макет AppBar, включенный в библиотеку поддержки дизайна Android.
источник
Чтобы просто добавить ActionBar Compat, ваше действие или приложение должны использовать тему @ style / Theme.AppCompat в AndroidManifest.xml следующим образом:
Это добавит панель действий в активность (или все действия, если вы добавили эту тему в приложение)
Но обычно вам нужно настроить панель действий. Для этого вам нужно создать два стиля с родительским элементом Theme.AppCompat, например, «@ style / Theme.AppCompat.Light». Первый будет для api 11> = (версии Android со встроенной панелью действий Android), второй - для api 7-10 (без сборки в панели действий).
Давайте посмотрим на первый стиль. Он будет расположен в res / values-v11 / styles.xml . Это будет выглядеть так:
И вам нужно иметь такой же стиль для api 7-10. Он будет расположен в res / values / styles.xml , НО, поскольку эти уровни api еще не знают об исходных элементах стиля панели действий Android, мы должны использовать один, предоставленный библиотекой поддержки. Элементы ActionBar Compat определяются так же, как и в оригинальном android, но без части "android:" спереди:
Обратите внимание, что даже если уровни api выше 10 уже имеют панель действий, вы все равно должны использовать стили AppCompat. Если вы этого не сделаете, при запуске Acitvity на устройствах с Android 3.0 и выше будет отображаться следующая ошибка:
Вот ссылка на эту оригинальную статью http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html, написанную Крисом Бэйнсом.
PS извините за мой английский
источник
Проверьте и убедитесь, что у вас нет другой папки значений, которая ссылается на theme.styled и не использует тему AppCompat.
т.е.
values-v11
папкаисточник
Попробуй это...
styles.xml
AndroidManifest.xml
источник
Вы
Activity
расширяете,ActionBarActivity
что требуетAppCompat.theme
применения. Измените сActionBarActivity
наActivity
илиFragmentActivity
, это решит проблему.источник
Просто сделайте это Build -> Clean Project. Думаю, это решит вашу проблему.
источник
Конечно, есть. Ничто не применимо
Theme.Styled
к деятельности волшебным образом . Вам необходимо объявить, что ваша деятельность - или все ваше приложение - используетTheme.Styled
, например:источник
Я столкнулся с этой ошибкой, когда пытался создать DialogBox, когда внутри класса CustomAdapter выполнялось какое-то действие. Это был не класс Activity, а класс адаптера. После 36 часов усилий и поиска решений я пришел к этому.
Отправьте Activity как параметр при вызове CustomAdapter.
Определите переменные в настраиваемом адаптере.
Вызовите конструктор так.
И, наконец, при создании диалогового окна внутри класса адаптера сделайте это следующим образом.
Я надеюсь, это поможет вам
источник
Я просто перевожу свое приложение с ActionBarSherlock на ActionBarCompat. Попробуйте объявить свою старую тему так:
Затем установите тему в вашем AndroidManifest.xml:
источник
У меня был такой сбой на устройствах Samsung, хотя в этом действии использовался Theme.AppCompat . Основная причина была связана со странной оптимизацией на стороне Samsung:
Мое решение просто удаляло
android:launchMode="singleTask"
источник
android:launchMode="singleTask"
.android:launchMode="singleTask"
и все мои действия используют тему AppCompat: /в моем случае я создал настраиваемое представление, которое добавил в конструктор настраиваемого представления
правильный контекст - это активность, поэтому изменил его на:
или
источник
В моем представлении списка я использую специальный адаптер, который расширяет ArrayAdapter. в listiview у меня есть 2 кнопки, одна из кнопок - Custom AlertDialogBox. Пример: Activity parentActivity; Конструктор для адаптера `
`вызов адаптера из MainActivty
теперь напишите ur alerttdialog внутри кнопки ur, которая находится в классе адаптера
источник
para resolver o meu проблема, eu apenas adicionei na minha MainActivity ("Theme = Чтобы решить мою проблему, я просто добавил ее в свой MainActivity (" Theme = "@ style / MyTheme" "), где MyTheme - это имя моей темы
источник