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 utilizar la nueva versión de AppCompat v22.1.0 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 soluciono?
- DrawerLayout, NavigationView y android: Theme.Material.Light no es compatible?
- El color primario (a veces) se vuelve transparente
- java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV14 al actualizar a appcompat v23 - Android Studio
- Appcompat v7 no se introduce en el proyecto
- Android - onAttach (Context) no se llama a la API 23
- Cómo utilizar y estilo nuevo AlertDialog de appCompat 22.1 y superior
- Cómo utilizar la barra de progreso indeterminada en appcompat-v7 r21 biblioteca?
- El uso de SearchView con AppCompatActivity genera fallas en la interfaz de usuario
- GetActionBar () devuelve Null (AppCompat-v7 21)
- Ciclo de vida del fragmento AppCompat cambiado
- Error al agregar el botón de transmisión de Media Router
- Cómo personalizar el campo EditText en android utilizando AppCompat v7: 21
- Menú de desbordamiento textColor con AppCompat (usando la tecla de menú de hardware)
AppCompat es ahora más estricto en lo que espera en las banderas de la ventana del tema, más de cerca lo que obtendría del marco.
La razón principal detrás de esto es apoyar AppCompatDialogs que también estábamos agregando en esta versión. Ellos hacen un gran uso de la bandera windowNoTitle
, que AppCompat anteriormente no prestar mucha atención.
Así que para solucionar su problema tiene dos opciones:
La forma más sencilla es utilizar Theme.AppCompat.NoActionBar
como tema principal. Esto siempre hará lo correcto.
Si no puede hacer eso sin embargo (tal vez usted necesita para apoyar la barra de acción y no barra de acción), debe 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>
Deberías volver a la pista ahora.
Aquellos que siguen recibiendo errores después de todos los arreglos.
Por favor herede de
Theme.AppCompat.Light.NoActionBar
Y no use
<item name="windowActionBar">false</item>
Entonces, no obtendrá ningún error.
yo añadí
<item name="windowActionBar">false</item> <item name="windowNoTitle">true</item>
Pero no era suficiente. Por último, mover super.onCreate antes de setContentView en Actividad – arregló mi problema 🙂
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.v2_main_dash); ...
Solo usa esto en tu 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 en el archivo de actividades por favor dejelo
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); } }
- ¿Por qué logcat no muestra nada en mi Android?
- Los desarrolladores de esta aplicación no han configurado correctamente esta aplicación para iniciar sesión en Facebook.