studio rojo que mainactivity icon getsupportactionbar cannot activity java android xml appcompatactivity

java - rojo - No solicitar el problema de Window.FEATURE_ACTION_BAR



mainactivity extends appcompatactivity (4)

El uso de Theme.AppCompat.Light le dice a Android que desea que el marco le brinde un ActionBar. Sin embargo, está creando su propia Toolbar acción (una Toolbar ), por lo que le está dando señales mixtas al marco de cómo quiere que venga la barra de acción.

Dado que está utilizando una barra de herramientas, desea Theme.AppCompat.Light.NoActionBar .

El siguiente paso es asegurarse de que su barra de herramientas tenga el estilo correcto, que parece ser el problema en el que se encuentra. Para diseñar su barra de herramientas como una barra de acción con los colores que definió para su tema, debe proporcionar un tema como el siguiente:

<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" />

Para obtener más información, consulte la sección "estilo" del widget de la barra de herramientas en esta publicación del blog de desarrolladores de Android .

Estoy tratando de construir mi aplicación, pero sin éxito ... Lo intenté de varias maneras pero nada funcionó. 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 style.xml es:

<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 pueden ver he declarado

<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>

Este es mi manifiesto.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 forma 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 está coloreada. .


En mi caso, creé una nueva actividad y olvidé definir su aplicación: tema en AndroidManifest.xml:

<activity android:name=".HistoryActivity" android:label="History" android:theme="@style/AppTheme.Primary"></activity>


Resolví el problema después de cambiar el valor de "android: theme" para la Actividad en el manifiesto de "@ style / AppTheme" a "@ style / AppTheme.NoActionBar":

<activity android:name=".MyXXXActivity" ... android:theme="@style/AppTheme.NoActionBar" />


Suponiendo 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>

Agregue estas líneas adicionales después de:

<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>

Luego agrega esto a tu actividad en 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