Android Studio 0.4.5
Documentación de Android para crear cuadros de diálogo personalizados: http://developer.android.com/guide/topics/ui/dialogs.html
Si desea un cuadro de diálogo personalizado, puede mostrar una Actividad como cuadro de diálogo en lugar de utilizar las API de cuadro de diálogo. Simplemente cree una actividad y establezca su tema en Theme.Holo.Dialog en el <activity>elemento manifiesto:
<activity android:theme="@android:style/Theme.Holo.Dialog" >
Sin embargo, cuando probé esto me sale la siguiente excepción:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity
Estoy apoyando lo siguiente, y no puedo usar algo mayor que 10 por minuto:
minSdkVersion 10
targetSdkVersion 19
En mis estilos tengo lo siguiente:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Y en mi manifiesto tengo esto para la actividad:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:theme="@android:style/Theme.Holo.Light.Dialog"
android:name="com.ssd.register.Dialog_update"
android:label="@string/title_activity_dialog_update" >
</activity>
Crear un cuadro de diálogo como este era algo que esperaba hacer, ya que ya he completado el diseño.
¿Alguien puede decirme cómo puedo solucionar este problema?
fuente

AppCompatel formulario de la biblioteca de soporte para admitir barras de acción por debajo del nivel de API 11. Solo úsaloandroid:theme="@style/AppTheme" >para la actividad en manifiestoAndroidManifest.xml, el tema que está especificando para su actividad está anulando el tema que está especificando para su aplicación. Eliminar laandroid:themelínea de la<activity>etiqueta.Respuestas:
La razón por la que tiene este problema es porque la actividad a la que está tratando de aplicar el tema del diálogo se está extendiendo, lo
ActionBarActivityque requiereAppCompatque se aplique el tema.Actualización : Ampliación
AppCompatActivitytambién tendría este problemaEn este caso, cambie la herencia Java de
ActionBarActivityaActivityy deje el tema de diálogo en el manifiesto tal como es, unTheme.AppCompatvalor noLa regla general es que si desea que su código sea compatible con versiones anteriores de Android, debería tener el
AppCompattema y el código de Java debería extenderseAppCompatActivity. Si tienes * una actividad que no necesita este soporte, como que solo te interesan las últimas versiones y características de Android, puedes aplicarle cualquier tema, pero el código de Java debe extenderse por completoActivity.NOTA: Cuando cambie de
AppCompatActivity(o una subclaseActionBarActivity) aActivity, también debe cambiar las diferentes llamadas con "soporte" a la llamada correspondiente sin "soporte". Entonces, en lugar degetSupportFragmentManagerllamargetFragmentManager.fuente
ActionBarActivitylo que se muestra en sus declaraciones de importación del comentario debajo de la pregunta.Todo lo que necesita hacer es agregar
android:theme="@style/Theme.AppCompat.Light"a su etiqueta de aplicación en elAndroidManifest.xmlarchivo.fuente
Copiando la respuesta de @ MarkKeen en los comentarios anteriores ya que tuve el mismo problema.
Tenía el error indicado en la parte superior de la publicación y sucedió después de agregar un cuadro de diálogo de alerta. Tengo toda la información de estilo relevante en el manifiesto. Mi problema se solucionó cambiando una referencia de contexto en el generador de alertas. Cambié:
a:
Y no más problemas.
fuente
getActivity()lugar dethislo sugerido anteriormente y el problema está solucionado. En cuanto a por qué, solo puedo suponer que el código anterior AlertDialog.Builder (xxx) quería que se pasara un tipo diferente o simplemente era menos exigente con lo que se pasó, mientras que el Builder actual () realmente quiere una Actividad. Dado que Google ha optado por ocultar (¿eliminar?) La documentación del código anterior, presumiblemente en un esfuerzo por alentar el uso de la versión v7.app, no conozco ninguna forma de asegurarlo.getContext()lugar dethissi estás dentro de un ArrayAdapter o una clase de adaptador similar.min sdk es 10.
ActionBarestá disponible desde el nivel 11 de la API. Por lo tanto, para 10 estaría usandoAppCompatdesde la biblioteca de soporte para la que necesita usarTheme.AppCompato descendiente de la misma.Utilizar
O si no quieres una barra de acción en la parte superior
Más información @
http://developer.android.com/guide/topics/ui/actionbar.html
Editar:
Podría haber leído mal la publicación de opinión.
Parece que op quiere un diálogo con un tema de actividad. Entonces, como ya sugirió Bobbake4, extienda en
Activitylugar deActionBarActivity.También eche un vistazo a los atributos del cuadro de diálogo @ en el siguiente enlace
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/
fuente
Si está utilizando el contexto de la aplicación, así:
cámbielo a un contexto de actividad como este:
fuente
Estaba experimentando este problema a pesar de que mi tema era un
AppCompattema y mi actividad era unAppCompatActivity(oActivity, como se sugiere en las respuestas de otros). Así que limpié, reconstruí y volví a ejecutar el proyecto.( Compilación -> Proyecto limpio; Compilación -> Proyecto de reconstrucción; Ejecutar -> Ejecutar )
Puede parecer tonto, ¡pero ahora funciona muy bien !
¡Solo espero que ayude!
fuente
Esto es lo que me solucionó: en lugar de especificar el tema en manifiesto, lo definí
onCreatepara cada actividad que se extiendeActionBarActivity:Aquí
MyAppThemees un descendiente deTheme.AppCompat, y se define en xml. Tenga en cuenta que el tema debe establecerse antessuper.onCreateysetContentView.fuente
ve a tus estilos y pon el padre
en vez de
fuente
Cambiar el tema de la actividad deseada. Esto funciona para mi:
fuente
En mi caso no tengo el archivo de valores-v21 en mi directorio res. Luego lo creé y agregué los siguientes códigos:
fuente
Tuve tal bloqueo en los dispositivos Samsung a pesar de que la actividad sí utilizó Theme.AppCompat . La causa raíz estaba relacionada con optimizaciones extrañas en el lado de Samsung:
Mi solución fue simplemente eliminar
android:launchMode="singleTask"fuente
Si necesita extender ActionBarActivity que necesita en su style.xml:
Si configura como tema principal de su aplicación como Android: Theme.Material.Light en lugar de AppTheme.Base , obtendrá un error "IllegalStateException: debe usar un tema Theme.AppCompat (o descendiente) con esta actividad".
fuente
Solo haz
En vez de
fuente
thisespera que sea.Tuve el mismo problema, pero se resolvió cuando puse esto en manifiesto: android: theme = "@ style / Theme.AppCompat.
fuente
En mi caso, tal problema apareció cuando intenté mostrar Dialog. El problema estaba en contexto, he usado getBaseContext () que teóricamente debería devolver el contexto de Actividad, pero parece que no, o devuelve el contexto antes de que se aplique cualquier Tema.
Así que simplemente reemplacé getBaseContexts () con " this ", y ahora funciona como se esperaba.
fuente
Tuve una actividad con un tema
<android:theme="@android:style/Theme.Dialog">utilizado para mostrar el diálogo en mi aplicación. y tuve el mismo problemaResolví este error cambiando el código de actividad como a continuación:
fuente
para mí fue la solución para usar ContextThemeWrapper:
desde Android - ¿Cómo crear FAB mediante programación?
fuente
Asegúrese de utilizar un contexto de actividad mientras crea un nuevo cuadro de diálogo de alerta y no una aplicación o contexto base.
fuente
También tuve este problema y lo que hice para solucionarlo, Y aún usar el tema Holo fue seguir estos pasos:
Primero reemplacé esta importación:
Con este:
luego cambió mi extensión de:
a esto:
Y también tuvo que cambiar esta importación:
a esta importación:
y luego puede usar su etiqueta de tema en el manifiesto en el nivel de actividad:
y, por último, (a menos que tenga otras clases en su proyecto que tengan que usar v7 appCompat) puede limpiar y reconstruir su proyecto o eliminar esta entrada en el archivo de compilación de gradle en el nivel de la aplicación:
Si tiene otras clases en su proyecto que tienen que usar v7 appCompat, simplemente limpie y reconstruya el proyecto.
fuente
Llegó a esto porque desea aplicar Material Design en su estilo de tema en versiones anteriores de sdk a 21.
ActionBarActivityrequiere,AppThemepor lo que si también desea evitar su propia personalización sobre su AppTheme, solo tiene que cambiar su styles.xml (anterior SDK 21) para que de esta manera, se pueda heredar un tema de App Compat.para esto:
fuente
Cambie el estilo de tema principal a
Esto funcionó para mí ...
fuente
Tienes muchas soluciones a ese error.
Debe usar Activity o FragmentActivity en lugar de ActionbarActivity o AppCompatActivity
Si desea usar ActionbarActivity o AppCompatActivity , debe cambiar en styles.xml Theme.Holo.xxxx a Theme.AppCompat.Light (si es necesario, agregue a DarkActionbar )
Si no necesita atributos avanzados sobre la barra de acción o AppCompat , no necesita usar Actionbar o AppCompat .
fuente
En el manifiesto de Android, simplemente cambie el tema de actividad a AppTheme como sigue el fragmento de código
fuente
Esto es cuando quieres un AlertDialog en un Fragmento
fuente
En mis experiencias, el problema era el contexto donde mostraba mi diálogo. Dentro de un clic de botón, ejemplifico un AlertDialog de esta manera:
Pero el contexto no era correcto y causó el error. Lo he cambiado usando el contexto de la aplicación de esta manera:
En declarar sección:
en el método onCreate
Y finalmente en el código donde necesito el AlertDialog:
Esta es la solución para mí.
fuente
Este me funcionó:
fuente
Su actividad está extendiendo ActionBarActivity, lo que requiere que se aplique AppCompat.theme . Cambie de ActionBarActivity a Activity o FragmentActivity , resolverá el problema.
fuente
Estaba teniendo este mismo problema. Porque estaba creando un cajón de navegación personalizado. Pero olvido mencionar el tema en mi manifiesto como este
Tan pronto como agregué el tema anterior a mi manifiesto, resolvió el problema.
fuente
Solución rapida.
Cambie su tema principal padre en styles.xml
Reemplazar desde
a
fuente
Esta solución funcionó para mí.
La biblioteca de diseño depende de las Bibliotecas de soporte de Support v4 y AppCompat, por lo que no use versiones diferentes para appcompat y la biblioteca de diseño en gradle.
utilizar
en vez de
fuente