Actualizado a AppCompat v22. 1. 0 y ahora obteniendo IllegalArgumentException: AppCompat no admite las características del tema actual


Acabo de actualizar mi aplicación para usar la recién lanzada v22.1.0 AppCompat y ahora estoy recibiendo la siguiente excepción cuando abro mi aplicación.

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)

¿Cómo lo arreglo?

Author: Chris Banes, 2015-04-22

4 answers

AppCompat ahora es más estricto en lo que se espera en las banderas de la ventana del tema, coincidiendo más estrechamente con lo que obtendría del marco.

La razón principal detrás de esto es para soportar AppCompatDialogs que también estábamos agregando en esta versión. Hacen un uso intensivo de la bandera windowNoTitle, a la que AppCompat anteriormente no prestaba mucha atención.

Así que para solucionar tu problema tienes dos opciones:

La manera fácil es simplemente usar Theme.AppCompat.NoActionBar como su tema principal. Esto siempre servirá lo correcto.

Si no puedes hacer eso (tal vez necesites soportar barra de acción y ninguna barra de acción), debes hacer lo siguiente:

<style name="MyTheme" parent="Theme.AppCompat">
    ...
</style>

<style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Usted debe estar de vuelta en la pista ahora.

 507
Author: Chris Banes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-21 20:17:55

Los que todavía están recibiendo el error después de todos los que arreglan.

Por favor herede de

Theme.AppCompat.Light.NoActionBar

Y no use

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

Entonces, no obtendrá ningún error.

 33
Author: Adnan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-24 16:57:05

He añadido

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

Pero no fue suficiente. Por fin, súper en movimiento.onCreate antes de setContentView en Actividad-solucionado mi problema:)

   public void onCreate(Bundle savedInstanceState) {    

        super.onCreate(savedInstanceState);    
        setContentView(R.layout.v2_main_dash);
        ...
 13
Author: Sergey Vakulenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-13 15:10:28

Simplemente use esto en su style.xml en la carpeta values-v21 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 por favor 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);
    }
}
 0
Author: Ribin Haridas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-08 10:05:38