Eu tenho ActionBarActivity
com NavigationDrawer
e uso support_v7 Toolbar
como ActionBar. Em um dos meus fragmentos a barra de ferramentas possui visualização personalizada. Em outros fragmentos Toolbar
deve mostrar o título.
Como obter Toolbar
instância para personalizar a partir de fragmentos? Posso obter o ActionBar com getActivity().getActionBar()
, mas se eu chamar setTitle()
para esta instância ActionBar, ele não fará nada.
UPD:
No meu caso
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(como MrEngineer13 disse) não funcionam na criação do primeiro fragmento porque eu o chamo de onHiddenChanged (). Agora adiciono mais um ao onCreateView () e funciona bem.
Respostas:
Você precisa lançar sua actividade a partir
getActivity()
deAppCompatActivity
primeiro. Aqui está um exemplo:A razão de você ter que lançá-lo é porque
getActivity()
retorna umFragmentActivity
e você precisa de umAppCompatActivity
Em Kotlin:
fonte
Caso os fragmentos devam ter visualização personalizada da ToolBar, você pode implementar a ToolBar para cada fragmento separadamente.
adicione ToolBar em fragment_layout:
encontre-o no fragmento:
o listener do menu pode ser criado de duas maneiras: substituir onOptionsItemSelected em seu fragmento:
ou definir ouvinte para a barra de ferramentas ao criá-la em onCreateView ():
fonte
onOptionsItemSelected()
vez de Fragment's, para evitar repetição de código.Você tem duas opções para obter a Barra de Ferramentas fragmentada
Primeiro
e o segundo
fonte
fonte
Para usuários Kotlin
(activity as AppCompatActivity).supportActionBar?.show()
fonte
!!
é completamente evitável com?
e vai lhe poupar uma possível falha(activity as? AppCompatActivity)?.supportActionBar?.show()
Talvez você precise tentar
getActivity().getSupportActionBar().setTitle()
se estiver usando support_v7.fonte
Do seu fragmento: (obter a barra de ferramentas do fragmento?)
isso é muito útil quando você está usando o botão giratório na barra de ferramentas e chama o botão giratório ou visualizações personalizadas na barra de ferramentas a partir de um fragmento!
De sua atividade:
fonte
Em XML
Kotlin: Em fragment.kt -> onCreateView ()
-> onCreateOptionsMenu ()
-> onOptionsItemSelected ()
fonte
Eu fiz isso usando estas etapas.
onCreateView
do fragmento principal.MainActivity
(Atividade pai) do fragmento. Mesmo se você estiver usando qualquer botão ou item de menu, poderá alterar o título deonSelectedItemClickListener
, como fiz no meu caso.fonte
se você estiver usando a barra de ferramentas personalizada ou ActionBar e quiser obter a referência de sua barra de ferramentas / barra de ação de Fragments, você precisa primeiro obter a instância de sua Atividade Principal do Método onCreateView do Fragment como abaixo.
em seguida, use a atividade para implementação posterior, como abaixo
Antes de chamar isso, você precisa inicializar sua barra de ferramentas personalizada em sua MainActivity como abaixo.
Primeiro defina a sua barra de ferramentas pública como
e no método onCreate () atribuem o id da barra de ferramentas personalizada
É isso aí. Vai funcionar em Fragment.
fonte