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
AppCompat
el 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:theme
lí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
ActionBarActivity
que requiereAppCompat
que se aplique el tema.Actualización : Ampliación
AppCompatActivity
también tendría este problemaEn este caso, cambie la herencia Java de
ActionBarActivity
aActivity
y deje el tema de diálogo en el manifiesto tal como es, unTheme.AppCompat
valor noLa regla general es que si desea que su código sea compatible con versiones anteriores de Android, debería tener el
AppCompat
tema 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 degetSupportFragmentManager
llamargetFragmentManager
.fuente
ActionBarActivity
lo 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.xml
archivo.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 dethis
lo 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 dethis
si estás dentro de un ArrayAdapter o una clase de adaptador similar.min sdk es 10.
ActionBar
está disponible desde el nivel 11 de la API. Por lo tanto, para 10 estaría usandoAppCompat
desde la biblioteca de soporte para la que necesita usarTheme.AppCompat
o 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
Activity
lugar 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
AppCompat
tema 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í
onCreate
para cada actividad que se extiendeActionBarActivity
:Aquí
MyAppTheme
es un descendiente deTheme.AppCompat
, y se define en xml. Tenga en cuenta que el tema debe establecerse antessuper.onCreate
ysetContentView
.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
this
espera 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.
ActionBarActivity
requiere,AppTheme
por 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