web-dev-qa-db-fra.com

Utiliser la barre d'outils dans toutes les activités (Android)

J'utilise une barre d'outils pour remplacer l'ActionBar. Tout se passe bien avec un seul problème:

La barre d'outils s'affiche uniquement sur l'activité principale.

Si j'essaie d'appeler la barre d'outils sur n'importe quelle activité de la même manière que pour l'activité principale, l'application se bloque lorsque j'appelle cette activité.

Si j'essaie de gonfler la barre d'outils surCreateOptionsMenu, cette activité se bloque lorsque je l'appelle.

Comment puis-je appeler/utiliser la même barre d'outils dans toutes mes activités et pas seulement la principale.

voici quelques morceaux du code:

public Android.support.v7.widget.Toolbar toolbar;

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);
    toolbar = (Android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_id);
    setSupportActionBar(toolbar);
}

Le code ci-dessus fonctionne pour appeler la barre d'outils avec succès, mais cela ne fonctionne que si je l'utilise sur l'activité principale, le reste des activités plantera si j'y ai appelé la barre d'outils de la même manière que ci-dessus.

Un peu d'aide s'il vous plaît?

Merci.

Édité:

Sur demande, voici d'autres fragments de code:

app_bar.xml:

<?xml version="1.0" encoding="utf-8"?>

<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/actionbarbgcolor"
app:popupTheme="@style/popUpTheme">

</Android.support.v7.widget.Toolbar>

themes.xml (remplacement styles.xml):

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools">

<style name="DefaultActionBarTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowActionBar">false</item>
    <item name="Android:textColorPrimary">@color/windowbackgroundcolor</item>
    <item name="Android:windowBackground">@color/windowbackgroundcolor</item>
</style>

<style name="popUpTheme">
    <item name="Android:textColor">@color/actionbarbgcolor</item>
</style>
</resources>
30
Yousef Imran

J'ai trouvé la solution, j'ai oublié d'inclure la barre d'outils dans le reste des fichiers de mise en page des activités. J'appelais donc une barre d'outils qui n'existait pas dans la présentation de cette activité.

Je l'ai seulement inclus dans l'activité principale, c'est pourquoi cela a fonctionné là-bas et s'est écrasé dans le reste.

Pour les débutants, cela signifie que le code suivant doit exister dans chaque fichier xml de mise en page dans lequel vous souhaitez que la barre d'outils fonctionne:

<include layout="@layout/app_bar"/>

Notez que "app_bar" est juste le nom que j'ai appelé ma barre d'outils, le vôtre peut être différent.

Bonne chance.

42
Yousef Imran

vous pouvez créer une mise en page avec le code de suivi qui contient la barre d'outils

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:fitsSystemWindows="true"
    tools:context="com.tejariapp.myapplicationtester1.MainActivity">


    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </Android.support.design.widget.AppBarLayout>

</Android.support.design.widget.CoordinatorLayout>

faites attention à la valeur de la hauteur, si vous ne la définissez pas wrap_content valeur, vous pouvez voir que d'autres éléments sont passés sous la barre d'outils et puis dans chaque mise en page que vous souhaitez avoir la barre d'outils, vous pouvez simplement écrire ceci

<include layout="@layout/toolabar" />
2
Marjan Dn