tablas studio linearlayout elementos ejemplos ejemplo dinamico dinamicas constraint caracteristicas amontonados android android-layout android-studio

android - studio - Debe utilizar un tema Theme.AppCompat(o descendiente) con esta actividad



table layout android (30)

Cambia tu estilo de tema padre a

parent="Theme.AppCompat"

Esto me funcionó ...

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 diálogo personalizado, puede mostrar una Actividad como un diálogo en lugar de usar las API de diálogo. Simplemente cree una actividad y establezca su tema en Theme.Holo.Dialog en el elemento de manifiesto <activity> :

<activity android:theme="@android:style/Theme.Holo.Dialog" >

Sin embargo, cuando probé esto obtengo 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 a 10 para el mínimo:

minSdkVersion 10 targetSdkVersion 19

En mis estilos tengo los siguientes:

<!-- 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 el cuadro de diálogo de esta forma era algo que esperaba hacer, ya que ya había completado el diseño.

¿Alguien puede decirme cómo puedo solucionar este problema?


Cambiar el tema de la actividad deseada. Esto funciona para mí:

<activity android:name="HomeActivity" android:screenOrientation="landscape" android:theme="@style/Theme.AppCompat.Light" android:windowSoftInputMode="stateHidden" />


Copiando la respuesta de @MarkKeen en los comentarios anteriores ya que tuve el mismo problema.

Tuve el error indicado en la parte superior de la publicación y ocurrió 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é:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

a:

new android.support.v7.app.AlertDialog.Builder(this)

Y no más problemas.


En el manifiesto de Android, simplemente cambie el tema de la actividad a AppTheme como sigue el fragmento de código

<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme"> </activity>


En mi caso no tengo ningún archivo de valores-v21 en mi directorio res. Luego lo creé y agregué en él los siguientes códigos:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>



En mi experiencia, el problema fue el contexto donde mostré mi diálogo. Dentro de un botón, ejemplifico un AlertDialog de esta manera:

builder = new AlertDialog.Builder(getApplicationContext());

Pero el contexto no era correcto y causó el error. Lo he cambiado usando el contexto de la aplicación de esta manera:

En la sección de declaración:

Context mContext;

en el método onCreate

mContext = this;

Y finalmente en el código donde necesito el AlertDialog:

start_stop = (Button) findViewById(R.id.start_stop); start_stop.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { if (!is_running) { builder = new AlertDialog.Builder(mContext); builder.setMessage("MYTEXT") .setCancelable(false) .setPositiveButton("SI", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Task_Started = false; startTask(); } }) .setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } } }

Esta es la solución para mí.


Esta solución funcionó para mí.

La biblioteca de diseño depende de las bibliotecas de soporte de v4 y de AppCompat, por lo que no use una versión diferente para appcompat y la biblioteca de diseño en gradle.

utilizar

compile ''com.android.support:appcompat-v7:23.0.0'' compile ''com.android.support:design:23.0.0''

en lugar de

compile ''com.android.support:appcompat-v7:23.0.0'' compile ''com.android.support:design:23.1.0''


Estaba experimentando este problema a pesar de que mi Tema era un Tema de AppCompat y mi Actividad era una Actividad de AppCompatActivity (o Activity , como se sugiere en las respuestas de otros). Así que limpié, reconstruí y ejecuté nuevamente el proyecto.

( Build -> Clean Project; Build -> Rebuild Project; Run -> Run )

Puede parecer tonto, pero ahora funciona muy bien !

Sólo espero que ayude!


Estaba recibiendo este mismo problema. Porque estaba creando un cajón de navegación personalizado. Pero me olvido de mencionar el tema en mi manifiesto como este.

android: theme = "@ style / Theme.AppCompat.NoActionBar"

Tan pronto agregué el tema anterior a mi manifiesto, resolvió el problema.


Este me funcionó:

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>


Esto es cuando quieres un AlertDialog en un fragmento

AlertDialog.Builder adb = new AlertDialog.Builder(getActivity()); adb.setTitle("My alert Dialogue /n"); adb.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //some code } }); adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); adb.show();


Esto es lo que lo solucionó para mí: en lugar de especificar el tema en el manifiesto, lo onCreate en onCreate para cada actividad que extiende ActionBarActivity :

@Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.MyAppTheme); super.onCreate(savedInstanceState); setContentView(R.layout.my_activity_layout); ... }

Aquí MyAppTheme es un descendiente de Theme.AppCompat , y se define en xml. Tenga en cuenta que el tema debe establecerse antes de super.onCreate y setContentView .


Esto funcionó para mí, acabo de cambiar:

final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

a esto:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);


Ha llegado 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 sus estilos.xml (Anterior a SDK 21), de esta manera, puede heredar para un tema de App Compat.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

para esto:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">


La razón por la que tiene este problema es porque la actividad a la que intenta aplicar el tema del diálogo es extender ActionBarActivity que requiere que se AppCompat tema AppCompat .

Actualización : la extensión de AppCompatActivity también tendría este problema

En este caso, cambie la herencia de Java de ActionBarActivity a Activity y deje el tema del diálogo en el manifiesto tal como está, un valor que no sea Theme.AppCompat

La regla general es que si desea que su código sea compatible con versiones anteriores de Android, debe tener el tema AppCompat y el código Java debe extender AppCompatActivity . Si tiene * una actividad que no necesita este soporte, como si solo le interesan las últimas versiones y características de Android, puede aplicarle cualquier tema, pero el código java debe extender la Activity antigua.

NOTA: Cuando el cambio de AppCompatActivity (o una subclase, ActionBarActivity ), a Activity , también debe cambiar las distintas llamadas con "support" a la llamada correspondiente sin "support". Entonces, en lugar de getSupportFragmentManager , llame a getFragmentManager .


Mi actividad con SectionsPagerAdapter y ViewPager & Fragment

public class MyActivity extends AppCompatActivity implements ActionBar.TabListener ... ... @Override public void onPostResume(){ super.onPostResume(); try { getSupportActionBar().setDisplayShowTitleEnabled(false); }catch (NullPointerException ignored){ } }


Para mí fue la solución para usar ContextThemeWrapper:

private FloatingActionButton getFAB() { Context context = new android.support.v7.view.ContextThemeWrapper(getContext(), R.style.AppTheme); FloatingActionButton fab = new FloatingActionButton(context); return fab;}

desde Android - ¿Cómo crear FAB programáticamente?


Para mí, ninguna de las respuestas anteriores funcionó incluso después de tener Theme.AppCompat como mi tema base para la aplicación. Estaba usando com.android.support:design:24.1.0 Así que acabo de cambiar la versión a 24.1.1 . Después de la sincronización de Gradle, volvió a funcionar y la excepción desapareció. Me parece que el problema era con algunas versiones anteriores de bibliotecas de soporte de diseño.

Solo pongo esto aquí en caso de que otras respuestas no funcionen para algunas personas.


Si necesita extender ActionBarActivity necesita en su style.xml:

<!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"/> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. -->

Si establece como tema principal de su aplicación como android: Theme.Material.Light en lugar de AppTheme.Base , obtendrá el error "IllegalStateException: debe usar un tema Theme.AppCompat (o descendiente) con esta actividad".


Solo haz

new AlertDialog.Builder(this)

En lugar de

new AlertDialog.Builder(getApplicationContext())


Solución rápida.

Cambia tu tema principal base en styles.xml

Reemplazar desde

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

a

<style name="AppTheme" parent="Theme.AppCompat">


Su actividad es extender ActionBarActivity que requiere que se aplique el AppCompat.theme . El cambio de ActionBarActivity a Activity o FragmentActivity solucionará el problema.

Si no usa ninguna barra de acción, entonces:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"


También tuve este problema y lo que hice para solucionarlo Y, a pesar de eso, utilizar el tema de Holo fue seguir estos pasos:

Primero reemplacé esta importación:

import android.support.v7.app.AppCompatActivity;

Con este:

import android.app.Activity;

luego cambié mi extensión de:

public class MyClass extends AppCompatActivity {//...

a esto:

public class MyClass extends Activity {//...

Y también tuvo que cambiar esta importación:

import android.support.v7.app.AlertDialog;

a esta importación:

import android.app.AlertDialog;

y luego puede usar su etiqueta de tema en el manifiesto en el nivel de actividad:

android:theme="@android:style/Theme.Holo.Dialog" />

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:

compile ''com.android.support:appcompat-v7:23.2.1''

Si tiene otras clases en su proyecto que tienen que usar v7 appCompat, simplemente limpie y reconstruya el proyecto.


Tienes muchas soluciones a ese error.

  1. Deberías usar Activity o FragmentActivity en lugar de ActionbarActivity o AppCompatActivity

  2. Si desea usar ActionbarActivity o AppCompatActivity , debe cambiar en styles.xml Theme.Holo.xxxx por Theme.AppCompat.Light (si es necesario, agregar a DarkActionbar )

Si no necesita atributos avanzados sobre la barra de acción o AppCompat , no necesita usar Actionbar o AppCompat .


Todo lo que necesita hacer es agregar android:theme="@style/Theme.AppCompat.Light" a su etiqueta de aplicación en el archivo AndroidManifest.xml .


Tuve el mismo problema, pero se resolvió cuando puse esto en el manifiesto: android: theme = "@ style / Theme.AppCompat.

<application android:allowBackup="true" android:icon="@drawable/icon" android:label="@string/app_name_test" android:supportsRtl="true" android:theme="@style/Theme.AppCompat"> ... </application>


Tuve una falla en los dispositivos Samsung a pesar de que la actividad usaba 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"


Ve a tus estilos y pon al padre.

parent="Theme.AppCompat"

en lugar de

parent="@android:style/Theme.Holo.Light"


min sdk es 10. ActionBar está disponible desde el nivel 11 de api. Por lo tanto, para 10 estaría usando AppCompat de la biblioteca de soporte para la que necesita usar Theme.AppCompat o descendiente de la misma.

Utilizar

android:theme="@style/Theme.AppCompat" >

O si no quieres barra de acción en la parte superior

android:theme="@style/Theme.AppCompat.NoActionBar">

Más información @

http://developer.android.com/guide/topics/ui/actionbar.html

Editar:

Puede que haya leído mal el post.

Parece que quiere un diálogo con un tema de actividad. Entonces, como ya sugirió Bobbake4, extienda la Activity lugar de ActionBarActivity .

También vea los atributos de diálogo @ en el enlace de abajo

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/