web-dev-qa-db-fra.com

Configurer la barre d'outils en tant que barre d'actions dans un fragment

Je souhaite configurer ma barre d’outils en tant que barre d’actions, mais comme votre barre d’outils est un layoutelement, elle doit figurer dans votre layout. Maintenant, ma mise en page est dans mon fragment.

J'ai ajouté la barre d'outils dans ma mise en page et je l'appelle dans mon fragment:

//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);

Cela fonctionne parce que je peux définir le titre, etc., mais je souhaite maintenant qu'il réagisse comme une barre d’action, car j’ai envie de l’avoir. setDisplayHomeAsUpEnabled (true)

Pour ce faire, je dois changer la barre d'outils en une barre d'action:

setSupportActionBar(toolbar);

Cela ne fonctionne pas dans mon fragment ... 

Quelqu'un peut-il m'aider à obtenir que ma barre d'outils fonctionne comme une barre d'action dans un fragment.

34
Laurenswuyts

Désormais, ActionBarActivity est obsolète. Vous devez convertir votre activité de getActivity() à AppCompatActivity en premier. Voici un exemple:

((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();

La raison pour laquelle vous devez le lancer est parce que getActivity() renvoie FragmentActivity et que vous avez besoin de AppCompatActivity

47
Pratik Butani

essayer:

 ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
25
notdrone

ActionBar est une propriété d'activité. Si vous souhaitez définir une barre d'outils à partir d'un fragment donné en tant que ActionBar de l'activité propriétaire, récupérez l'activité qui possède le fragment (Fragment.getActivity()) et définissez sa propriété ActionBar.

Ensuite, utilisez la même méthode setDisplayHomeAsUpEnabled que vous avez mentionnée pour commencer sur la barre d’action après avoir défini votre barre d’outils en tant que barre d’action pour obtenir le bouton de sauvegarde/sauvegarde.

Vous devrez évidemment gérer cela avec soin si votre application contient plusieurs fragments au sein de cette activité.

16
dominicoder

Utilisation 

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
7
Ravi

Si vous utilisez Kotlin, essayez ceci:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, state: Bundle?): View? { 
        (activity as AppCompatActivity).setSupportActionBar(your_toolbar)
        setHasOptionsMenu(true)

        return inflater.inflate(R.layout.your_layout, container, false)
}


override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater?.inflate(R.menu.your_menu, menu)
}
0
Miravzal

Disons que l'activité contenant le fragment est MainActivity.

Faire 

MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call 
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");
0
Micheal Mavericks