Как изменить заголовок текущего окна?

У меня есть 2 фрагмента. При запуске приложения первый фрагмент сразу открыт и имеет название которое я написал в AndroidManyfest.xml: android:label="@string/app_name". При нажатии кнопки на этом фрагменте открывается новый, и как изменить название в заголовке через xml? Я решил это прописав getActivity().setTitle("") в каждом фрагменте. Можно ли это как-то через манифест?


Ответы (1 шт):

Автор решения: Спицко Дмитрий

Фрагменты не связаны с манифестом или appBar. Чтобы добиться того, что вы хотите, я вижу два пути:

1) Научить фрагменты изменять данные в "родном" для активити аппбаре. Опять таки два варианта действия. Первый - научить фрагмент настраивать аппбар через нужный метод и вызывать этот метод после транзакции

public class B extends Fragment{
   public void setUpAppBar(ActionBar appBar){
      appBar.setTitle("Fragment B");
   }
}

public void onCreate(Bundle savedInstanceState) {
   //...
   B b = new B();
   getSupportFragmentManager().beginTransaction().add(R.id.main, b).commit();
   b.setUpAppBar(getSupportActionBar());
}

Второй вариант - получать аппбар от активити внутри фрагмента. Но мне он не особо нравится

public void onAttach(Context context) {
    super.onAttach(context)
    ((MyActivity)context).getSupportActionBar().setTitle("Fragment B")
}

2) Вместо редактирования одного и того же аппбара можно внутри каждого фрагмента создавать свой.

→ Ссылка