Estou recebendo uma RuntimeException no Android 2.3.5, mas estou usando Theme.AppCompat (res / values / themes.xml). Este é o telefone: 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>
Aqui está o arquivo para os valores-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>
Aqui está o erro.
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
Desculpe pessoal, eu também tenho android: theme = "@ style / Theme.Styled" definido em AndroidManifest.xml.
Theme.Styled
?Respostas:
Se você estiver estendendo ActionBarActivity em sua MainActivity, terá que alterar o tema pai em values-v11 também.
Portanto, o style.xml em values-v11 será -
EDIT: Eu recomendo que você pare de usar ActionBar e comece a usar o layout AppBar incluído na Android Design Support Library
fonte
Para simplesmente adicionar o ActionBar Compat, sua atividade ou aplicativo deve usar o tema @ style / Theme.AppCompat em AndroidManifest.xml como este:
Isso adicionará a barra de ação na atividade (ou todas as atividades se você adicionou este tema ao aplicativo)
Mas geralmente você precisa personalizar sua barra de ações. Para fazer isso, você precisa criar dois estilos com o pai Theme.AppCompat, por exemplo, "@ style / Theme.AppCompat.Light". O primeiro será para api 11> = (versões do android com build na actionbar do android), o segundo para api 7-10 (sem build no actionbar).
Vejamos o primeiro estilo. Ele estará localizado em res / values-v11 / styles.xml . Isso parecerá assim:
E você precisa ter o mesmo estilo para api 7-10. Ele estará localizado em res / values / styles.xml , MAS como os níveis da API ainda não sabem sobre os itens de estilo da barra de ação do Android original, devemos usar um, fornecido pela biblioteca de suporte. Os itens do ActionBar Compat são definidos como o Android original, mas sem a parte "android:" na frente:
Marque que, mesmo se os níveis de API superiores a 10 já tiverem barra de ação, você ainda deve usar estilos AppCompat. Caso contrário, você terá este erro no lançamento do Acitvity em dispositivos com Android 3.0 e superior:
Aqui está o link deste artigo original http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html escrito por Chris Banes.
PS desculpa pelo meu ingles
fonte
Verifique e certifique-se de que você não tenha outra pasta de valores que faça referência a theme.styled e não use o tema AppCompat
ie
values-v11
pastafonte
Experimente isso ...
styles.xml
AndroidManifest.xml
fonte
Seu
Activity
está estendendo oActionBarActivity
que requer que oAppCompat.theme
seja aplicado. Altere deActionBarActivity
paraActivity
ouFragmentActivity
, isso resolverá o problema.fonte
Basta fazê-lo Build -> Clean Project. Acho que isso vai resolver seu problema.
fonte
Claro que sim. Nada vai se aplicar magicamente
Theme.Styled
a uma atividade. Você precisa declarar que suas atividades - ou todo o seu aplicativo - está usandoTheme.Styled
, por exemplo:fonte
Encontrei este erro quando estava tentando criar uma DialogBox quando alguma ação é executada dentro da classe CustomAdapter. Esta não era uma atividade, mas uma classe de adaptador. Depois de 36 horas de esforços e procurando soluções, eu descobri isso.
Envie a Activity como um parâmetro enquanto chama o CustomAdapter.
Defina as variáveis no adaptador personalizado.
Chame o construtor assim.
E, finalmente, ao criar a caixa de diálogo dentro da classe do adaptador, faça assim.
Espero que isso ajude você
fonte
Acabei de fazer meu aplicativo passar de ActionBarSherlock para ActionBarCompat. Tente declarar seu antigo tema assim:
Em seguida, defina o tema em seu AndroidManifest.xml:
fonte
Tive esse travamento em dispositivos Samsung , embora a atividade usasse Theme.AppCompat . A causa raiz estava relacionada a otimizações estranhas do lado da Samsung:
Minha solução foi apenas remover
android:launchMode="singleTask"
fonte
android:launchMode="singleTask"
.android:launchMode="singleTask"
e todas as minhas atividades usam o tema AppCompat: /no meu caso eu fiz uma visão personalizada que adicionei ao construtor de visão personalizada
o contexto correto é a atividade, então mude para:
ou
fonte
Para minha visualização de lista, estou usando um adaptador customizado que estende ArrayAdapter. em listiview eu tenho 2 botões um dos botões como Custom AlertDialogBox. Ex: Activity parentActivity; Construtor para Adaptador `
`chamando Adaptador de MainActivty
agora escreva o seu diálogo de alerta dentro do seu botão que está na classe Adaptador
fonte
para resolver o meu problema, eu apenas adicionei na minha MainActivity ("Theme = Para resolver o meu problema, acabei de adicioná-lo na minha MainActivity (" Theme = "@ style / MyTheme" ") onde MyTheme é o nome do meu tema
fonte