Actualizado a AppCompat v22.1.0 y ahora recibiendo IllegalArgumentException: AppCompat no es compatible con las características actuales del tema

Acabo de actualizar mi aplicación para usar el nuevo v22.1.0 AppCompat y ahora recibo 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?

AppCompat ahora es más estricto con respecto a lo que se espera en los indicadores de la ventana del tema, más acorde con lo que obtendría del marco.

La razón principal detrás de esto es para apoyar AppCompatDialogs que también estábamos agregando en este lanzamiento. Hacen un uso intensivo de la windowNoTitle , a la que AppCompat previamente no prestó mucha atención.

Entonces, para solucionar su problema, tiene dos opciones:

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

Sin embargo, si no puedes hacer eso (quizás necesites admitir la barra de acciones y ninguna barra de acción), debes hacer lo siguiente:

   

Deberías volver a la pista ahora.

Aquellos que todavía reciben el error después de todos esos arreglos.

Por favor, heredar de

 Theme.AppCompat.Light.NoActionBar 

y no uses

 false 

Entonces, no obtendrás ningún error.

yo añadí

 false true 

pero no fue suficiente. Finalmente, mover super.onCreate antes de setContentView en Activity – solucionó mi problema 🙂

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.v2_main_dash); ... 

Solo use esto en su style.xml en la carpeta values-v21, no se necesita ninguna otra edición

   

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