У меня есть ActionBarActivity
с NavigationDrawer
и использовать support_v7 Toolbar
в ActionBar. В одном из моих фрагментов панель инструментов имеет настраиваемый вид. В остальных фрагментах Toolbar
следует указывать заголовок.
Как получить Toolbar
инстанс для настройки из фрагментов? Я могу получить ActionBar getActivity().getActionBar()
, но если я вызываю setTitle()
этот экземпляр ActionBar, он ничего не делает.
UPD:
В моем случае
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(как сказал MrEngineer13) не работают при создании первого фрагмента, потому что я вызываю его из onHiddenChanged (). Теперь я добавляю еще один в onCreateView (), и он отлично работает.
Ответы:
Вы должны бросить вашу деятельность от
getActivity()
кAppCompatActivity
первому. Вот пример:Причина, по которой вы должны его использовать, заключается в том, что
getActivity()
возвращает a,FragmentActivity
и вам нуженAppCompatActivity
В Котлине:
источник
Если фрагменты должны иметь настраиваемый вид ToolBar, вы можете реализовать ToolBar для каждого фрагмента отдельно.
добавить ToolBar в fragment_layout:
найди во фрагменте:
прослушиватель меню может быть создан двумя способами: переопределить onOptionsItemSelected в вашем фрагменте:
или установите прослушиватель для панели инструментов при ее создании в onCreateView ():
источник
onOptionsItemSelected()
вместо Fragment, чтобы избежать повторения кода.У вас есть два варианта получить панель инструментов во фрагменте
Первый
и второй
источник
источник
Для пользователей Kotlin
(activity as AppCompatActivity).supportActionBar?.show()
источник
!!
можно полностью избежать,?
и это избавит вас от возможной аварии(activity as? AppCompatActivity)?.supportActionBar?.show()
Может,
getActivity().getSupportActionBar().setTitle()
стоит попробовать, если вы используете support_v7.источник
Из вашего фрагмента: (получить панель инструментов из фрагмента?)
это очень полезно, когда вы используете счетчик на панели инструментов и вызываете счетчик или настраиваемые представления на панели инструментов из фрагмента!
Из вашей деятельности:
источник
В XML
Котлин: во фрагменте.kt -> onCreateView ()
-> onCreateOptionsMenu ()
-> onOptionsItemSelected ()
источник
Я сделал это, выполнив следующие действия.
onCreateView
основном фрагменте.MainActivity
(Родительская активность) фрагмента. Даже если вы используете любую кнопку или пункт меню, вы можете изменить заголовокonSelectedItemClickListener
, как это сделал я в моем случае.источник
если вы используете настраиваемую панель инструментов или ActionBar и хотите получить ссылку на свою панель инструментов / панель действий из фрагментов, вам необходимо сначала получить экземпляр основного действия из метода onCreateView фрагмента, как показано ниже.
затем используйте активность для дальнейшей реализации, как показано ниже
Прежде чем вызывать это, вам необходимо инициализировать свою настраиваемую панель инструментов в MainActivity, как показано ниже.
Сначала установите общедоступную панель инструментов, например
и в методе onCreate () назначьте идентификатор пользовательской панели инструментов
Это оно. Он будет работать во фрагменте.
источник