Tengo ActionBarActivitycon NavigationDrawery uso support_v7 Toolbarcomo ActionBar. En uno de mis fragmentos, la barra de herramientas tiene una vista personalizada. En otros fragmentos Toolbardebe mostrar título.
¿Cómo obtener una Toolbarinstancia para personalizar a partir de fragmentos? Puedo obtener ActionBar con getActivity().getActionBar(), pero si llamo setTitle()para esta instancia ActionBar, no hace nada.
UPD:
En mi caso
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(como dijo MrEngineer13) no funciona en la creación del primer fragmento porque lo llamo desde onHiddenChanged (). Ahora agrego más uno a onCreateView () y funciona bien.

Respuestas:
Debes enviar tu actividad de
getActivity()aAppCompatActivityprimero. He aquí un ejemplo:La razón por la que tienes que lanzarlo es porque
getActivity()devuelve unFragmentActivityy necesitas unAppCompatActivityEn Kotlin:
fuente
En caso de que los fragmentos tengan una vista personalizada de ToolBar, puede implementar ToolBar para cada fragmento por separado.
agregue ToolBar en fragment_layout:
encuéntrelo en fragmento:
El oyente de menú se puede crear de dos maneras: anular onOptionsItemSelected en su fragmento:
o configure el oyente para la barra de herramientas cuando la cree en onCreateView ():
fuente
onOptionsItemSelected()lugar de la de Fragmentos, para evitar la repetición del código.Tiene dos opciones para obtener la barra de herramientas en fragmentos
El primero
y el segundo
fuente
fuente
Para usuarios de Kotlin
(activity as AppCompatActivity).supportActionBar?.show()fuente
!!es completamente evitable con?y le evitará un posible accidente(activity as? AppCompatActivity)?.supportActionBar?.show()Quizás tengas que intentarlo
getActivity().getSupportActionBar().setTitle()si estás usando support_v7.fuente
Desde su Fragmento: (¿Obtener la barra de herramientas del fragmento?)
¡Esto es muy útil cuando está usando la ruleta en la barra de herramientas y llama la ruleta o las vistas personalizadas en la barra de herramientas desde un fragmento!
De tu actividad:
fuente
En XML
Kotlin: en fragment.kt -> onCreateView ()
-> onCreateOptionsMenu ()
-> onOptionsItemSelected ()
fuente
Lo hice siguiendo estos pasos.
onCreateViewel fragmento principal.MainActivity(Actividad principal) del fragmento. Incluso si está utilizando cualquier botón o elemento del menú, puede cambiar el título deonSelectedItemClickListener, tal como lo hice en mi caso.fuente
Si está utilizando una barra de herramientas personalizada o ActionBar y desea obtener una referencia de su barra de herramientas / barra de acción de Fragments, primero debe obtener una instancia de su Actividad principal del Método onCreateView de Fragment como se muestra a continuación.
luego use la actividad para una mayor implementación como a continuación
Antes de llamar a esto, debe inicializar su barra de herramientas personalizada en su MainActivity como se muestra a continuación.
Primero defina su barra de herramientas pública como
y en el método onCreate () asigne la identificación de la barra de herramientas personalizada
Eso es. Funcionará en Fragmento.
fuente