No solicite problema Window.FEATURE_ACTION_BAR
Estoy tratando de construir mi aplicación, pero sin éxito .. He intentado de varias maneras, pero nada fue trabajado. La excepción es:
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
Mi estilo.xml es:
- Android: ¿Cómo navegar de nuevo desde la sub-pantalla de preferencia a través de la barra de acción en xml?
- Las sugerencias de auto de EditText están en blanco o no existen
- Android Resource - Array de matrices
- Cómo especificar la carpeta lib para JARs cuando se utiliza un archivo de generación de hormigas generado por Android?
- El atributo no se declara (Android) en los atributos xml básicos
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- theme customizations --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:textColorPrimary">@color/ldrawer_color</item> <item name="actionMenuTextColor">@color/ldrawer_color</item> <item name="android:textColorSecondary">@color/ldrawer_color</item> </style> </resources>
Y como puedes ver, he declarado
<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>
Este es mi manifest.xml
<application android:allowBackup="true" tools:replace="android:icon" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Y mi BaseActivity
que uso para extender otras actividades
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; public abstract class BaseActivity extends AppCompatActivity { public Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResource()); toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); getSupportActionBar().setTitle(BaseActivity.this.getResources().getString(R.string.app_name)); //getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } protected abstract int getLayoutResource(); protected void setActionBarIcon(int iconRes) { toolbar.setNavigationIcon(iconRes); } }
No sé por qué se bloquea .. La única manera de iniciar la aplicación sin bloqueo es establecer el padre en el style.xml en Theme.AppCompat.Light.NoActionBar
pero de esta manera la barra de estado es transparente y no coloreada .. .
- Animación de Android Flipboard
- Valor igual a match_parent o fill_parent en dimens.xml?
- Android usando Intellij Versión 14 - Actualizar referencias XML sólo en el archivo de recursos XML actual
- Pantalla de bienvenida de Android
- Vista emergente de Android No funciona
- ¿Cómo alinear el botón a la derecha, sin ser superpuesto por TextView?
- set android: texto de strings.xml
- Cómo agregar un texto largo con muchos párrafos en string.xml en android
Usando Theme.AppCompat.Light
le dice a Android que desea que el framework proporcione una ActionBar para usted. Sin embargo, usted está creando su propia Toolbar
acción (una Toolbar
), por lo que está dando el marco de señales mixto en cuanto a dónde desea que el ActionBar de venir.
Ya que está utilizando una barra de herramientas, desea Theme.AppCompat.Light.NoActionBar
.
El siguiente paso es asegurarse de que su barra de herramientas esté diseñada correctamente, lo que parece ser el lugar donde se están ejecutando los problemas. Para diseñar tu barra de herramientas como una barra de acción con los colores que definiste para tu tema, necesitas proporcionar un tema así:
<android.support.v7.widget.Toolbar android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
Consulte la sección "estilo" del widget de la barra de herramientas en esta publicación de blog de desarrolladores de Android para obtener más información.
Asumiendo que tienes estas líneas en styles.xml
:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
Añada estas líneas adicionales después de:
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
A continuación, añada esto a su actividad en el manifiesto:
<activity android:name=".activity.YourActivity" android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->
Esa fue la mejor solución para mí después de revisar los tutoriales y otras soluciones
En mi caso, he creado una nueva actividad y he olvidado definir su aplicación: theme en AndroidManifest.xml:
<activity android:name=".HistoryActivity" android:label="History" android:theme="@style/AppTheme.Primary"></activity>
- Conversión de RemoteView en una vista
- Error al azar de SQLiteConnectionPool en Android. ¿Como evitar?