À l'aide de la Barre d'outils avec des Fragments
Je suis en train de créer un viewpager qui glisse à travers 3 différents fragments chacune avec une autre barre d'outils. J'ai mis en œuvre la nouvelle barre d'outils dans une activité à l'avant et à réussi à le faire fonctionner, cependant je suis en train de le faire fonctionner avec des fragments
Voici le fragment de code
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout resource that'll be returned
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
mToolbar = (Toolbar) rootView.findViewById(R.id.toolbar_home);
if (mToolbar != null) {
setSupportActionBar(mToolbar);
}
mToolbar.setTitle(null);
return rootView;
}
Je prolonge mon fragment avec Fragment
, cependant j'obtiens l'erreur
Cannot resolve method setSupportActionBar
Je ne suis pas sûr de la façon de résoudre ce problème, si je retire la setSupportActionBar
code de l'arrêt de travail avec certains appareils?
- Est-il d'un problème d'avoir dans votre activité de mise en page et le mettre dans votre activité?
- chaque barre d'outils pour chaque viewpager aura une couleur différente et les différents menus, j'ai donc pensé qu'il serait mieux de les contrôler avec les fragments
- Attendez, ce n'est pas le point entier dans ce scénario de ne pas définir le
ToolBar
commeActionBar
? Depuis votre intention est pour chaque fragment d'avoir sa propreToolBar
(qui glisse le long avec le reste du contenu du fragment), nous parlons de la 'autonome' (faites défiler jusqu'à la "autonome" de la section) de l'utilisation du widget. - Le menu de la partie est déjà pris en charge avec différents menu xmls et attachant via
onCreateOptionsMenu
. La partie de couleur peut être fait dans leonAttach
en utilisant quelque chose comme stackoverflow.com/questions/25081706/...
InformationsquelleAutor Al Hennessey | 2015-03-12
Vous devez vous connecter pour publier un commentaire.
Fragments n'ont pas cette méthode
setSupportActionBar()
. ActionBar est une propriété de l'Activité, afin de fixer votre barre d'outils, comme l'actionBar, votre activité doit s'étendre de ActionBarActivity et puis vous pouvez appeler dans votre Fragment:Mise à JOUR
Si vous utilisez AppCompatActivity :
J'ai vu beaucoup de réponses mentionnant à
setSupportActionBar
pour la barre d'outils à l'intérieur deFragment
mais cette approche peut aller mal si vous avez une barre d'outils dansActivity
et un autreToolbar
dansFragment
.setSupportActionBar
de l'Activité de la Barre d'outils pour le Fragment de la barre d'outils, Vous pouvez faire face à la duplication deMenuItem
même si vous essayez de remplacer à l'aide desetHasOptionsMenu(true)
.setSupportActionBar
à l'intérieur de votre Fragment.Afin d'éviter cela, je recommande d'utiliser la barre d'outils, les méthodes comme ce fragment à l'intérieur de gonfler menu et utilisez
et l'utilisation
Toolbar.OnMenuItemClickListener
interface pour recevoir avec menuItems cliquez sur événements.Modifier (Article Copié à partir de MrEngineer13 répondre)
et si vous êtes inquiet au sujet de la touche retour, vous pouvez le configurer comme ceci
Avec la nouvelle AppCompatActivity vous devriez l'appeler au lieu de ActionBarActivity:
Base sur @Fayçal Naseer réponse. Voici l'exemple complet (avec quelques notes) pour l'aide personnalisée
Toolbar
avec de navigation et menu dans
Fragment
fragment_home.xml
HomeFragment.kt
menu_home.xml
Espoir aide
Vous pouvez ajouter une barre d'outils dans les Fragments à l'aide de cette