Почему «getActivity().setTitle()» для установки заголовка панели инструментов не работает?

У меня есть 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);

Заранее спасибо!

0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В коде, который вы упомянули, вы пытаетесь сделать две вещи одновременно: установить заголовок actionbar и заголовок toolbar. Именно поэтому он не работает.

Решение:

Если вы хотите установить заголовок на панели действий, вы можете сделать это следующим образом:

 ActionBar actionBar = getSupportActionBar();
 actionBar.setTitle("ACTIONBAR TITLE");

Теперь, если вы хотите установить название для пользовательской панели инструментов, которую вы создали, вы можете сделать это следующим образом:

Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("TOOLBAR TITLE");

Помнить:

ActionBar — это элемент, присутствующий в верхней части экрана активности. Это характерная черта мобильного приложения, которая постоянно присутствует во всех его действиях.

Панель инструментов — это представление, включенное в макет, как и любое другое представление. Как и в случае с обычным представлением, панель инструментов легче размещать, анимировать и контролировать. В одном действии можно определить несколько отдельных элементов панели инструментов.

Дайте мне знать, если у вас есть какие-либо сомнения. Удачного кодирования!!

Привет, @Shivrajsinh Sarvaiya, спасибо за объяснение, но я использую тему NoActionBarthemes.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

xerez 05.04.2023 12:38
Ответ принят как подходящий

Это решение сработало для меня: https://stackoverflow.com/a/26998718/21021740

Я заменил getActivity().setTitle(R.string.buscar_futbolista); на ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(R.string.buscar_futbolista);.

Поскольку вы находитесь во фрагменте, getActivity() всегда будет возвращать FragmentActivity, для работы setTitle вам потребуется AppCompatActivity.

Samsad CV 13.04.2023 07:14

Другие вопросы по теме