ActionBarCompat: java.lang.IllegalStateException: necesita utilizar un Theme.AppCompat

Estoy obteniendo una RuntimeException en Android 2.3.5 pero estoy usando Theme.AppCompat (res / values ​​/ themes.xml). Este es el teléfono: http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php

    @style/QueryActionBar @style/QueryActionBar   @color/blueback @color/blueback @color/blueback @color/blueback   

Aquí está el archivo de valores-v11.

         

Aquí está el error

  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) ... 11 more 

Lo siento amigos, también tengo Android: theme = “@ style / Theme.Styled” definido en AndroidManifest.xml.

Si está extendiendo ActionBarActivity en su MainActivity, tendrá que cambiar el tema principal también en values-v11.
Entonces el estilo.xml en values-v11 será –

       

EDITAR: Le recomendaría que deje de usar ActionBar y comience a utilizar el diseño de AppBar incluido en la Biblioteca de soporte de diseño de Android

Para agregar simplemente el soporte de ActionBar, su actividad o aplicación debe usar el tema @ style / Theme.AppCompat en AndroidManifest.xml de la siguiente manera:

   

Esto agregará la barra de acciones en la actividad (o todas las actividades si agregaste este tema a la aplicación)


Pero generalmente necesitas personalizar tu barra de acciones. Para hacer esto, necesita crear dos estilos con el padre de Theme.AppCompat, por ejemplo, “@ style / Theme.AppCompat.Light”. El primero será para api 11> = (versiones de Android con comstackción en la barra de acciones de Android), el segundo para api 7-10 (sin comstackción en la barra de acciones).

Veamos el primer estilo. Se ubicará en res / values-v11 / styles.xml . Se verá así:

   

Y debes tener el mismo estilo para la api 7-10. Se ubicará en res / values ​​/ styles.xml , PERO debido a que los niveles de API todavía no conocen los elementos de estilo originales de la barra de acción de Android, debemos usar uno, proporcionado por la biblioteca de soporte. Los elementos de Compatibilidad de ActionBar se definen como el original de Android, pero sin la parte “android:” en el frente:

   

Marque eso, incluso si los niveles de API superiores a 10 ya tienen barra de acciones, debería seguir utilizando los estilos de AppCompat. Si no lo hace, tendrá este error al iniciar Acitvity en dispositivos con Android 3.0 y superior:

java.lang.IllegalStateException: necesita utilizar un tema Theme.AppCompat (o descendiente) con esta actividad.

Aquí está el enlace de este artículo original http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html escrito por Chris Banes.

PD Lo siento por mi inglés

Compruebe y asegúrese de no tener otra carpeta de valores que haga referencia a theme.styled y no use el tema AppCompat

es decir values-v11 carpeta values-v11

Prueba esto…

styles.xml

    

AndroidManifest.xml

        

Su Activity está extendiendo ActionBarActivity que requiere la AppCompat.theme de AppCompat.theme . Cambiar de ActionBarActivity a Activity o FragmentActivity , resolverá el problema.

Solo hazlo Build -> Clean Project. Creo que esto resolverá tu problema.

Mi manifiesto no hace referencia a ningún tema … no debería tener que AFAIK

Claro que sí. Nada va a aplicar mágicamente Theme.Styled . Theme.Styled a una actividad. Debes declarar que tus actividades, o toda tu aplicación, están usando Theme.Styled , por ejemplo Theme.Styled

  

Encontré este error cuando intentaba crear un DialogBox cuando se realizaba alguna acción dentro de la clase CustomAdapter. Esto no era una actividad, sino una clase de adaptador. Después de 36 horas de esfuerzos y buscar soluciones, se me ocurrió esto.

Envíe la Actividad como parámetro mientras llama al CustomAdapter.

 CustomAdapter ca = new CustomAdapter(MyActivity.this,getApplicationContext(),records); 

Defina las variables en el Adaptador personalizado.

 Activity parentActivity; Context context; 

Llame al constructor de esta manera.

 public CustomAdapter(Activity parentActivity,Context context,List records){ this.parentActivity=parentActivity; this.context=context; this.records=records; } 

Y finalmente, al crear el cuadro de diálogo dentro de la clase de adaptador, hazlo así.

 AlertDialog ad = new AlertDialog.Builder(parentActivity).setTitle("Your title"); and so on.. 

Espero que esto te ayude

Acabo de mover mi aplicación de ActionBarSherlock a ActionBarCompat. Intenta declarar tu viejo tema así:

  

Luego configura el tema en tu AndroidManifest.xml:

  

Tuve tal caída en los dispositivos de Samsung a pesar de que la actividad usó Theme.AppCompat . La causa raíz estaba relacionada con optimizaciones extrañas en el lado de Samsung:

 - if one activity of your app has theme not inherited from Theme.AppCompat - and it has also `android:launchMode="singleTask"` - then all the activities that are launched from it will share the same Theme 

Mi solución fue simplemente eliminar android:launchMode="singleTask"

en mi caso, hice una vista personalizada que agregué al constructor de vista personalizada

 new RoomView(getAplicationContext()); 

el contexto correcto es actividad así que lo cambié a:

 new RoomView(getActivity()); 

o

 new RoomView(this); 

Para mi vista de lista estoy usando Adaptador personalizado que extiende ArrayAdapter. en listiview tengo 2 botones uno de los botones como Custom AlertDialogBox. Ej: Actividad parentActivity; Constructor para Adaptador `

 public CustomAdapter(ArrayList data, Activity parentActivity,Context context) { super(context,R.layout.listdummy,data); this.mContext = context; this.parentActivity = parentActivity; } 

`llamando a Adapter desde MainActivty

 adapter = new CustomAdapter(dataModels,MainActivity.this,this); 

para resolver o meu problema, eu apenas adicionei na minha MainActivity (“Tema = Para resolver mi problema, acabo de agregarlo en mi MainActivity (” Theme = “@ style / MyTheme” “) donde MyTheme es el nombre de mi tema

 [Activity(Label = "Name Label", MainLauncher = true, Icon = "@drawable/icon", LaunchMode = LaunchMode.SingleTop, Theme = "@style/MyTheme")]