Tengo ActionBarActivity
con NavigationDrawer
y uso support_v7 Toolbar
como ActionBar. En uno de mis fragmentos, la barra de herramientas tiene una vista personalizada. En otros fragmentos Toolbar
debe mostrar título.
¿Cómo obtener una Toolbar
instancia 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()
aAppCompatActivity
primero. He aquí un ejemplo:La razón por la que tienes que lanzarlo es porque
getActivity()
devuelve unFragmentActivity
y necesitas unAppCompatActivity
En 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.
onCreateView
el 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