java.lang.IllegalArgumentException: AppCompat não é compatível com os recursos do tema atual


109

Tentei migrar um projeto do Eclipse para o Android Studio. Finalmente, consigo executá-lo, mas a certa altura recebi essa exceção e não encontrei nada no google sobre isso:

04-22 00:08:15.484    9891-9891/hu.illion.kwindoo E/AndroidRuntime FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{hu.illion.kwindoo/hu.illion.kwindoo.activity.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...    
Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
    at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
    at hu.illion.kwindoo.activity.MainActivity.onCreate(MainActivity.java:73)
    at android.app.Activity.performCreate(Activity.java:5047)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...

73. linha de MainActivity é:

setContentView(R.layout.activity_main);

Por favor, me aconselhe se você puder.


Nunca vi isso, mas talvez você esteja usando um recurso em R.layout.activity_main que requer uma versão diferente da API do Android? - Embora o Android Studio goste de falar sobre essas coisas ... Goodluck
Gready

poste seu theme.xml ou style.xml e activity_main.xml
Charaf Eddine Mechalikh

Você pode colocar seus arquivos .gradle aqui também? Você provavelmente depende de um aplicativo antigo?
RaphMclee

Respostas:


233

alternativa para a resposta de @sbaar,

manter windowActionBara falsee adicione windowNoTitlebem e coloque-a true.

ie

   <item name="windowActionBar">false</item>
   <item name="windowNoTitle">true</item>

4
Tive que fazer isso no meu aplicativo depois de atualizar para o appcompt mais recente (22.1) hoje. isso é tudo que mudei e meu aplicativo agora funciona novamente.
SteelBytes

4
isso é estranho, mas funciona depois de mudar ActionBarActivity -> AppCompatActivity
pawegio

5
Essa resposta não funcionou para mim. Apenas a resposta @sbaar funcionou. Seu tema deve ser herdado de: Theme.AppCompat.NoActionBar, além daqueles: <item name = "windowActionBar"> false </item> e <item name = "windowNoTitle"> true </item>
blueware de

1
Isso funciona para temas que não têm um NoActionBarestilo alternativo . No meu exemplo, funciona paraTheme.AppCompat.Light.Dialog
dobridog

1
Isso funciona ao herdar de Theme.AppComapt.NoActionBar. Perfeito!
Tariq

41

Remover

<item name="windowActionBar">false</item>

do seu tema e, em seguida, certifique-se de que está herdando de um tema .NoActionBar e, em seguida, configure a barra de ferramentas normalmente.


1
E por que eu deveria modificar alguma coisa? Este projeto foi muito bem com eclipse por meses.
Adam Varhegyi

3
Porque há algumas horas o Google lançou a versão 22.1 da biblioteca de suporte, causando esse problema no seu projeto (e no meu também). É apenas uma coincidência, não por causa da migração para o Android Studio.
jmart

3
Para mim, herdar o tema de .NoActionBar foi a chave, nenhuma remoção de elemento foi necessária.
Sergey Aldoukhov

30

Certifique-se de que o seu tema seja filho de Theme.AppCompat.NoActionBare em styles.xml:

<style name="MyMaterialTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="windowNoTitle">true</item>
        ...
</style>

A propósito, é um novo problema para a Biblioteca de Suporte 22.1.


@QadirHussain, Não, não fez.
Anggrayudi H

AppCompat.NoActionBar fez com que toda a minha cor textView em branco usasse Theme.AppCompat.Light.NoActionBar em vez
Hitesh Sahu


16

Verifique se você liga setContentView()depois super.onCreate()e não antes. Isso ajudou no meu caso.


Tinha windowNoTitle e windowActionBar, mas ainda não funcionava. Isso consertou para mim. Obrigado!
AVB


3

no meu caso, não mudei para o tema .NoActionBar. Acabei de remover o prefixo android deste item.

<item name="windowActionBar">false</item>

e o erro vai embora.


não mencione isso. feliz em ver seu comentário.
Setmax

3

Certifique-se de que

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

estão no topo de tudo isso funciona para mim ... boa sorte



1

Resolvi o problema com minha atividade principal estendendo AppCompatActivity :)


1

Eu tive o mesmo problema de alguma forma, removido android:do meu syles.xml conforme abaixo;

 <!-- caused crash -->
 <item name="android:windowActionBar">false</item>
 <item name="android:windowNoTitle">true</item>

 <!-- didn't cause crash -->
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>

0

Eu tive o mesmo problema quando atualizei a versão da biblioteca de 22.0.0 para 22.1.1 e corrigi-lo voltando para a versão anterior: com.android.support:appcompat-v7:22.0.0 e voltar a usar ActionBarActivity, não AppCompatActivity em minhas classes Activity, conforme exigido pela versão mais recente da biblioteca de compatibilidade. Vou tentar novamente mais tarde.


0

apenas use isto em seu style.xml nenhuma outra edição é necessária

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

<!-- theme customizations -->

<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

não adicione nada ao arquivo de atividade, por favor, deixe-o

public class Main extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

 }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} 

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
    return true;
}
return super.onOptionsItemSelected(item);
}

 }


0

No meu caso, procuro a resposta @rewrihitesh e percebo que inverti a ordem dos elementos . Mudando de

setContentView(R.layout.activity_test);
super.onCreate(savedInstanceState);

para

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

Resolva meu problema.

Espero que ajude !!


0

se você adicionou <item name="windowActionBar">false</item>, então, você precisa adicionar

<item name="windowNoTitle">true</item>

para resolver o problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.