У меня есть MainActivity и несколько фрагментов, и я хочу изменить заголовок Toolbar в зависимости от отображаемого Fragment.
Я пытался использовать getActivity().setTitle(R.string.buscar_futbolista); в onCreateView из Fragment, но не меняет название. Почему?
В моем MainActivity, в onCreate методе у меня есть следующее:
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(R.string.inicio);
setSupportActionBar(toolbar);
Заранее спасибо!
В коде, который вы упомянули, вы пытаетесь сделать две вещи одновременно: установить заголовок actionbar и заголовок toolbar. Именно поэтому он не работает.
Решение:
Если вы хотите установить заголовок на панели действий, вы можете сделать это следующим образом:
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("ACTIONBAR TITLE");
Теперь, если вы хотите установить название для пользовательской панели инструментов, которую вы создали, вы можете сделать это следующим образом:
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("TOOLBAR TITLE");
Помнить:
ActionBar — это элемент, присутствующий в верхней части экрана активности. Это характерная черта мобильного приложения, которая постоянно присутствует во всех его действиях.
Панель инструментов — это представление, включенное в макет, как и любое другое представление. Как и в случае с обычным представлением, панель инструментов легче размещать, анимировать и контролировать. В одном действии можно определить несколько отдельных элементов панели инструментов.
Дайте мне знать, если у вас есть какие-либо сомнения. Удачного кодирования!!
Это решение сработало для меня: https://stackoverflow.com/a/26998718/21021740
Я заменил getActivity().setTitle(R.string.buscar_futbolista); на ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(R.string.buscar_futbolista);.
Поскольку вы находитесь во фрагменте, getActivity() всегда будет возвращать FragmentActivity, для работы setTitle вам потребуется AppCompatActivity.
Привет, @Shivrajsinh Sarvaiya, спасибо за объяснение, но я использую тему
NoActionBar(вthemes.xmlу меня есть<style name = "Theme.HistoriaDelXCD" parent = "Theme.MaterialComponents.DayNight.NoActionBar">). Вот почему я создалToolbarв своемMainActivity.toolbar.setTitle()работает изMainActivity, ноgetActivity().setTitle(R.string.buscar_futbolista)изFragmentне меняет названиеToolbar. Я пытался следовать этому примеру: stackoverflow.com/a/34359806/21021740