java - rapido - Configurar barra de herramientas como barra de acciones en fragmento
barra de titulo de word (6)
Quiero configurar mi barra de herramientas como una barra de acciones, pero como su barra de herramientas es un layoutelement, tiene que estar en su diseño. Ahora mi diseño está en mi fragmento.
Agregué la barra de herramientas en mi diseño y la llamo dentro de mi fragmento:
//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
Funciona porque puedo configurar el título y demás, pero ahora quiero que reaccione como una barra de acciones porque quiero tener esto en realidad. setDisplayHomeAsUpEnabled (true)
Para hacer eso, tengo que cambiar la barra de herramientas a una barra de acciones:
setSupportActionBar(toolbar);
Eso no funciona en mi fragmento ...
¿Alguien puede ayudarme a hacer que mi barra de herramientas funcione como una barra de acción en un fragmento?
ActionBar es una propiedad de la actividad. Si desea establecer una barra de herramientas a partir de un fragmento dado como la barra de acciones de la actividad propietaria, obtenga la actividad que posee el fragmento ( Fragment.getActivity()
) y establezca su propiedad ActionBar.
A continuación, juse utiliza el mismo método setDisplayHomeAsUpEnabled que mencionaste para comenzar en la Barra de acciones después de configurar tu barra de herramientas como la Barra de acciones para obtener el botón de volver atrás / arriba.
Obviamente tendrá que administrar esto cuidadosamente si su aplicación tiene múltiples fragmentos dentro de esa Actividad.
Ahora ActionBarActivity
está en desuso, por lo que ActionBarActivity
debe convertir su actividad de getActivity()
en AppCompatActivity
. Aquí hay un ejemplo:
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();
La razón por la que tiene que realizar el getActivity()
es porque getActivity()
devuelve FragmentActivity
y necesita una AppCompatActivity
Digamos que la Actividad que contiene el fragmento es MainActivity.
Hacer
MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");
Si usa Kotlin, intente esto:
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)
}
Utilizar
((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
tratar:
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);