Comment fournir de la navigation avec la barre d'outils du bouton home sur la v7 de la barre d'outils
J'ai une barre d'outils dans mon activité ( import android.support.v7.widget.Toolbar;
) et je suis en train de fournir de la navigation à l'aide de son bouton d'accueil. Ce que j'ai:
Manifeste:
<!-- ... -->
<activity android:name=".SettingsActivity"
android:label="@string/settings"
android:parentActivityName=".MainActivity"/>
<!-- ... -->
view_toolbar.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:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp">
</android.support.v7.widget.Toolbar>
activity_settings.xml :
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Toolbar -->
<include
layout="@layout/view_toolbar" />
<!-- ... -->
ma méthode onCreate:
super.onCreate(bundle)
setContentView(R.layout.activity_settings);
//Set the toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Jusqu'à présent, je ne devrais pas avoir un bouton et je n'ai pas. Donc, nous allons bien. Mais quand j'ai essayé de l'ajouter, je ne pouvais pas.
J'ai d'abord essayé ceci:
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
N'a pas fonctionné.
Ensuite, j'ai essayé ceci (comme indiqué ici):
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ToolbarActivity.this, "Up clicked",
Toast.LENGTH_SHORT).show();
NavUtils.navigateUpFromSameTask(ToolbarActivity.this);
}
});
J'ai même essayé une solution de contournement que j'ai vu quelque part, impliquant la création d'un mannequin de menu et d'essayer de sortir à l'événement de l' onOptionsItemSelected
(qui n'est jamais appelée par la voie).
Que puis-je faire? Quelle est la bonne façon de fournir de la navigation par le biais de la barre d'outils?
- Parce que vous déclarez parent de l'activité sur le manifeste, donc je pense que cette réponse peut aider: stackoverflow.com/a/12276100/719212
- Quelle classe étend votre Activité?
- AppCompatActivity
- Avez-vous trouvé une solution à votre problème? Je suis confronté à la même chose. Pour moi, le bouton "Retour" ou icône d'accueil ne donne pas un appel à
onOptionMenuSelected
ni dans le Fragment, ni dans l'Activité. - Qu'en est
onOptionsItemSelected
?? De toute façon.. L'idée principale est de prendre de l'événement à partir deandroid.R.id.home
bouton etfinish()
votre activité. Essayez "Daniel Martin Shum"'s réponse ci-dessous. Ce qu'il dit est juste, même si elle ne résout pas mon problème à l'époque.
Vous devez vous connecter pour publier un commentaire.
C'est très simple. Juste suivre les étapes suivantes:
activity_child.xml
:(Dans mon projet, ce
AppBarLayout
est placé à l'intérieur d'unConstraintLayout
)ChildActivity.java
parentActivityName
propriété dansAndroidManifest.xml
Important
Pour que cela fonctionne correctement, ne pas appel
finish()
dans le parent de l'activité après l'appel destartActivity(intent)
.Avez-vous le code ci-dessous pour configurer votre barre d'outils, comme l'activité par défaut actionbar?
Vous n'avez pas défini une image icône pour le bouton d'accueil, peut-être qu'il se montre, mais vous ne pouvez pas le voir.
et comme @Gonzalo dit, vous devez également remplacer le menu, sélectionnez l'événement à gérer le bouton d'accueil de l'événement onClick
et pourquoi n'avez-vous pas de un appbarlayout pour contenir la barre d'outils?
Plus actionbar mettre en œuvre des détails s'il vous plaît jeter un oeil à mon projet github, j'espère que ça peut aider:
code java
https://github.com/DanielShum/MaterialAppBase/blob/master/materialAppBaseLibrary/src/main/java/com/daililol/material/appbase/base/BaseActionbarActivity.java
code xml
https://github.com/DanielShum/MaterialAppBase/blob/master/materialAppBaseLibrary/src/main/res/layout/base_actionbar_activity.xml
appbarlayout
mais il ne fonctionne pas. Aussi, l'icône s'affiche. Je peux le voir normalement, mais mon en appuyant sur n'a aucun effet.1 - définir votre barre d'outils
Toolbar toolbar = findViewById(R.id.toolbar);
2 - installation de votre icône
3 - remplacer cette méthode
Vous pouvez le faire comme ceci.
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
J'ai trouvé une façon simple. Ce qui fonctionne parfaitement en fonction de l'attente.
Autant que je sache, le bouton précédent de la barre d'outils est traitée comme un élément de menu, donc, comme vous le dites, vous devez remplacer le
onOptionsItemSelected
.onOptionsItemSelected
est jamais à l'appel, comme je dis dans mon post.Moi aussi j'avais ce genre de problème auparavant. Je présume qu'il se passe quelque chose avec
include
. Essayez d'ajouter uneid
de la barre d'outils mise en page inclus commeEt maintenant, essayez d'obtenir de la barre d'outils à l'aide de
incl_toolbar
.Espère que cette aide.
Ce qui concerne,
Sree