java.lang.IllegalArgumentException: AppCompat no es compatible con las funciones del tema actual

109

Intenté migrar un proyecto de Eclipse a Android Studio. Finalmente puedo ejecutarlo, pero en cierto punto obtuve esta excepción y no encontré nada en Google sobre esto:

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. La línea de MainActivity es:

setContentView(R.layout.activity_main);

Por favor avíseme si puede.

Adam Varhegyi
fuente
Nunca vi esto, pero tal vez esté usando una función en R.layout.activity_main que requiere una versión diferente de la API de Android. - Aunque a Android Studio le gusta contarte sobre esas cosas ... Goodluck
Gready
publique su theme.xml o style.xml y el activity_main.xml
Charaf Eddine Mechalikh
¿Puedes poner tus archivos .gradle aquí también? ¿Probablemente dependa de un antiguo appcompat?
RaphMclee

Respuestas:

233

alternativa a la respuesta de @ sbaar,

mantener windowActionBara falsey añadir windowNoTitleasí y ponerlo a true.

es decir

   <item name="windowActionBar">false</item>
   <item name="windowNoTitle">true</item>
SteelBytes
fuente
4
Tuve que hacer esto en mi aplicación después de actualizar a la última appcompt (22.1) hoy. eso es todo lo que he cambiado y mi aplicación ahora funciona de nuevo.
SteelBytes
4
eso es extraño, pero funciona después de cambiar ActionBarActivity -> AppCompatActivity
pawegio
5
Esta respuesta no funcionó para mí. Solo la respuesta de @sbaar funcionó. Su tema debe heredar de: Theme.AppCompat.NoActionBar además de aquellos: <item name = "windowActionBar"> false </item> y <item name = "windowNoTitle"> true </item>
blueware
1
Esto funciona para temas que no tienen NoActionBarestilo alternativo . En mi ejemplo, funciona paraTheme.AppCompat.Light.Dialog
dobridog
1
Esto funciona cuando se hereda de Theme.AppComapt.NoActionBar. ¡Perfecto!
Tariq
41

Eliminar

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

de su tema, luego asegúrese de que está heredando de un .NoActionBar Theme, luego configure su barra de herramientas como de costumbre.

sbaar
fuente
1
¿Y por qué debería modificar algo? Este proyecto estuvo muy bien con eclipse durante meses.
Adam Varhegyi
3
Porque hace unas horas Google lanzó su versión 22.1 de la biblioteca de soporte, causando este problema en su proyecto (y también en el mío). Es solo una coincidencia, no por la migración a Android Studio.
jmart
3
Para mí, heredar el tema de .NoActionBar fue la clave, no fue necesario eliminar ningún elemento.
Sergey Aldoukhov
30

Asegúrese de que su tema sea hijo de Theme.AppCompat.NoActionBar, luego en styles.xml:

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

Por cierto, es un nuevo problema para Support Library 22.1.

Anggrayudi H
fuente
@QadirHussain, No, no lo hice.
Anggrayudi H
AppCompat.NoActionBar hizo que todos mis textView color blanco usaran Theme.AppCompat.Light.NoActionBar en su lugar
Hitesh Sahu
Aún no funciona stackoverflow.com/questions/45643107/…
Ruchir Baronia
16

Compruebe si llama setContentView()después super.onCreate()y no antes. Esto ayudó en mi caso.

wilddev
fuente
Tenía windowNoTitle y windowActionBar pero aún no funcionaba. Esto me lo arregló. ¡Gracias!
avb
3

en mi caso no cambié a .NoActionBar Theme. Acabo de eliminar el prefijo de Android de este artículo.

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

y el error desaparece.

Setmax
fuente
no lo menciones. feliz de ver tu comentario.
Setmax
3

Asegúrate de eso

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

están en la cima de todo esto funciona para mí ... buena suerte

rewrihitesh
fuente
1

agregar dependencia a gradle así

compile 'com.android.support:appcompat-v7:21.0.3'
Saurabh Chandra Patel
fuente
1

Resolví el problema con mi actividad principal extendiendo AppCompatActivity :)

Russellhoff
fuente
1

Tuve el mismo problema de alguna manera, eliminado android:de mi syles.xml como se muestra a continuación;

 <!-- 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>
BENN1TH
fuente
0

Tuve el mismo problema cuando actualicé la versión de la biblioteca de 22.0.0 a 22.1.1 y lo arreglé volviendo a la versión anterior: com.android.support:appcompat-v7:22.0.0 y volví a usar ActionBarActivity, no AppCompatActivity en mis clases de actividad como lo requiere la versión más nueva de la biblioteca de compatibilidad. Lo intentaré de nuevo más tarde.

Gail
fuente
0

solo use esto en su style.xml no se necesita otra edición

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

no agregue nada al archivo de actividad, déjelo

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);
}

 }
Ribin Haridas
fuente
0

En la clase Java, cambie Main extends ActionBarActivitya Main extends Activity. Funcionó para mí.

شبير البلوشي
fuente
0

En mi caso, busco la respuesta @rewrihitesh, y noto que invertí el orden de los elementos . Cambio de

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

a

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

Solucione mi problema.

Espero eso ayude !!

Gueorgui Obregón
fuente
0

si ha agregado <item name="windowActionBar">false</item>, entonces, debe agregar

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

para resolver el problema.


fuente