Вам необходимо использовать тему Theme.AppCompat (или ее потомка) с этой деятельностью
Android Studio 0.4.5
Документация по Android для создания пользовательских диалоговых окон: http://developer.android.com/guide/topics/ui/dialogs.html
Если вам нужен пользовательский диалог, вы можете вместо использования API 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 для min:
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
, которая требует применения темыAppCompat
.Обновление: Расширение
AppCompatActivity
также будет иметь эту проблемуВ этом случае измените наследование Java с
ActionBarActivity
наActivity
и оставьте тему диалога в манифесте как есть, без значенияTheme.AppCompat
.Общее правило таково: если вы хотите, чтобы ваш код поддерживал старые версии Android, он должен иметь тему
AppCompat
, а java-код должен расширятьAppCompatActivity
. Если у вас есть *активность, которой не нужна такая поддержка, например, вас интересуют только последние версии и возможности Android, вы можете применить к ней любую тему, но java-код должен расширять обычную старуюActivity
.ПРИМЕЧАНИЕ: При переходе от
AppCompatActivity
(или подклассаActionBarActivity
) кActivity
, необходимо также изменить различные вызовы с "поддержкой" на соответствующие вызовы без "поддержки". Так, вместоgetSupportFragmentManager
, вызовитеgetFragmentManager
.Все, что вам нужно сделать, это добавить
Android:тема=то"@стиль/тема.Совместимости приложений.Световой" в вашем теге приложения в файл AndroidManifest.xml
.Копирование ответа от @MarkKeen в комментарии выше я имел такую же проблему.
У меня была ошибка указан в верхней части поста и произошло после того, как я добавил диалоговое окно предупреждения. У меня есть вся необходимая информация стиль в манифесте. Моя проблема была вылечена путем замены контекстная ссылка в конструкторе предупреждений - я изменил:
к:
И нет больше проблем.
min sdk - 10.
ActionBar
доступен с уровня api 11. Так что для 10 вы будете использоватьAppCompat
из библиотеки поддержки, для которой вам нужно использоватьTheme.AppCompat
или ее потомка.Используйте
Или если вам не нужна панель действий вверху
Подробнее @
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/
Это работало для меня, я просто изменен:
к этому:
Я столкнулись с этой проблемой, хотя моя тема была тема и совместимости приложений и моей деятельности был
AppCompatActivity
(или "деятельность", как полагают на других'с вариантами ответов). Так я убрал, восстановить и перезапустить проект.(Строить -> чистый проект ; строить> проект реконструкции ; выполнить -> запустите)
Это может показаться глупо, но сейчас это работает отлично!
Просто надеюсь, что это помогает!
Вот что установил его для меня: вместо того, чтобы указывать темы в манифесте, я определил его в метод onCreate для каждого вида деятельности, который расширяет
ActionBarActivity
:Здесь MyAppTheme
потомок
тема.Совместимости приложений, и определяется в XML. Обратите внимание, что тема должна быть установлена до супер.метод onCreate " и " setContentView`.зайдите в свой стили и поставить родителя
вместо
В моем случае у меня нет значения-в21 файл в мой каталог Res. Затем я создал его и добавил в нее следующие коды:
Если вам нужно продлить ActionBarActivity вам нужно на style.xml:
Если установить в качестве основной темы приложения как Android:темы.Материал.Свет вместо AppTheme.Базы тогда ты получишь “IllegalStateException:вы должны использовать тему.Тема совместимости приложений (или потомок) с этой деятельностью” ошибка.
Вобще
Вместо
Изменить тему нужной вам деятельности. Это работает для меня:
У меня был такой сбой на Samsung устройств, хотя деятельность его использовать тема.Совместимости приложений. Первопричина была связана с странно оптимизации на стороне Samsung:
Мое решение было просто удалить
launchMode=то" андроида:; singleTask"
вУ меня была такая же проблема, но она решаема, когда я положил это в манифесте: Android:тема=то"@стиль/тема.Совместимости приложений.
для меня было решение использовать ContextThemeWrapper:
от https://stackoverflow.com/questions/34555834/android-how-to-create-fab-programmatically
У меня активность с темой
<Android:тема=то"@Андроид:стиль/тема.Диалог" и>
используется для диалогового окна в моей appWidget и я была такая же проблемая решил эту ошибку путем изменения кода вида деятельности как ниже:
В моем случае такая проблема появилась, когда я пытался показать диалог. Проблема была в контексте, Я'использовать ве getBaseContext() который теоретически должен вернуться к контексту действия, но, похоже, его нет, или он вернется контексте перед любой примененной темой.
Поэтому я просто заменил getBaseContexts() с "это", и теперь он работает, как ожидалось.
Я имел эту проблему, а также и то, что я сделал, чтобы исправить это, и до сих пор используют тему Холо был предпринять следующие действия:
сначала Я заменил этот импорт:
с этим:
затем изменил свое расширение из:
к этому:
И тоже пришлось менять этот импорт:
для этого импорт:
и затем вы можете использовать ваш тег тема в манифесте на уровне деятельности:
и, наконец, (если у вас есть другие классы в свой проект, который должен использовать В7 совместимости приложений), вы можете очистить и восстановить ваш проект или удалить эту запись в Gradle в файл сборки на уровне приложения:
если у вас есть другие классы в свой проект, который должен использовать совместимости приложений В7 затем просто очистить и перестроить проект.
У вас есть много решений этой ошибки.
Вы должны использовать активность или FragmentActivity вместо ActionbarActivity или AppCompatActivity
Если вы хотите использовать ActionbarActivity или AppCompatActivity, вам необходимо изменить в styles.xml тема.Холо.ХХХХ на тему.Совместимости приложений.Света (при необходимости добавить в DarkActionbar)
Если вы Don'т нужны дополнительные атрибуты о панели действий или совместимости приложений вы Don'т должны использовать верхней панели или совместимости приложений.
Вы пришли к этому, потому что вы хотите применить материал дизайн в стиле тему в предыдущих версиях SDK для 21.
ActionBarActivity
требует `AppTheme дальсо если вы также хотите, чтобы предотвратить ваши собственные настройки о вашем AppTheme, только вы должны изменить styles.xml (предыдущие в СДК 21) таким образом, могут наследовать на тему совместимости приложений.для этого: