Ne pas demander le problème Window.FEATURE_ACTION_BAR
Je suis en train de construire mon application mais sans succès.. j'ai essayé plusieurs façons mais rien n'a fonctionné. L'exception est la suivante:
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.
Mon style.xml est:
<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>
et comme vous pouvez le voir, j'ai déclaré
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
C'est mon 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>
et mon BaseActivity
que j'utilise pour s'étendre à d'autres activités
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);
}
}
Je ne sais pas pourquoi il se bloque..La seule façon de démarrer l'application sans crash est de définir la société mère lors de la style.xml dans Theme.AppCompat.Light.NoActionBar
mais de cette façon la barre d'état est transparent et pas de couleur...
source d'informationauteur End.Game
Vous devez vous connecter pour publier un commentaire.
À l'aide de
Theme.AppCompat.Light
raconte Android que vous souhaitez le cadre d'une ActionBar pour vous. Toutefois, vous créez votre propre ActionBar (unToolbar
), afin de vous donner le cadre des signaux contradictoires quant à l'endroit où vous souhaitez l'ActionBar.Puisque vous utilisez une Barre d'outils, vous voulez
Theme.AppCompat.Light.NoActionBar
.La prochaine étape est de s'assurer que votre Barre d'outils est de style correctement, ce qui semble être l'endroit où vous êtes en cours d'exécution dans les questions. Pour le style de votre Barre d'outils comme un ActionBar en utilisant les couleurs que vous avez définie pour votre thème, vous devez fournir un thème comme:
Voir le "style" de la section de la Barre d'outils widget sur cet Développeurs Android post de blog pour plus d'informations.
En supposant que vous avez obtenu ces lignes dans
styles.xml
:Ajouter ces lignes supplémentaires après:
Puis l'ajouter à votre activité dans le manifeste:
Qui était la meilleure solution pour moi, après vérification des tutoriels et d'autres solutions
Dans mon cas, j'ai créé une nouvelle activité et j'ai oublié de préciser son application:thème AndroidManifest.xml:
J'ai résolu le problème après changement de la valeur de la "android:thème" de l'Activité dans le manifeste de "@style/AppTheme" "@style/AppTheme.NoActionBar":