Mam 1 aktywność z 3 fragmentami wewnątrz (Home-Login-RestorePass) Początkowo HomeFragment pokazuje, a pozostałe dwie są ukryte. Chcę, aby tytuł ActionBar zmienił się w zależności od tego, który Fragment się wyświetla.ActionBar Tytuł dynamicznie zmienia się z fragmentem
próbuję w mojej działalności z:
public void setActionBarTitle(String title){
getSupportActionBar().setTitle(title);
}
@Override
public void onResume() {
super.onResume();
// Set title
setActionBarTitle(getString(R.string.app_name));
}
i fragmenty ma takie same:
@Override
public void onResume() {
super.onResume();
// Set title
((LoginActivity) getActivity()).setActionBarTitle(getString(R.string.fragment_login));
}
Ale to nie działa. Zawsze pokazuje on R.string.fragment_login na tytule.
Używam FragmentTransaction do przejścia fragmentu:
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
HomeFragment homeFragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.fragmentHome);
LoginFragment loginFragment = (LoginFragment) getFragmentManager().findFragmentById(R.id.fragmentLogin);
ft.hide(homeFragment).addToBackStack(null);
ft.show(loginFragment).addToBackStack(null).commit();
}
});
Dodatkowo jeśli mogę zrobić pojawiają strzałką przycisk (Wstecz) na ActionBar zależności od fragmentu byłoby świetnie.
Dziękujemy za poświęcony czas! Pozdrowienia.
Czy rozważałeś użycie 'add()'/'remove()' na 'Fragment's zamiast' show() '/' hide() '? Problem wygląda na to, że może to być spowodowane sprzecznymi wywołaniami, aby zmienić tytuł paska akcji, ponieważ nawet ukryte "Fragmenty" są "aktywne", brakuje im tylko interfejsu użytkownika. Również wywołanie 'Fragment' on ones() pojawia się po twoim' Activity', a w obu 'Fragmentach 'twój najwyraźniej (przechodząc przez twój kod) ustawia tytuł' fragment_login' ...? – PPartisan
@PPartisan dzięki za poświęcony czas, próbowałem z add()/remove(), ale to nie działa, pozostałe 2 fragmenty są nad głównym fragmentem, najwyraźniej remove() nie zdejmuje fragmentów z widoku aktywności. Wszystkie moje fragmenty mają swoje unikalne wywołanie setActionBarTitle (* fragmentString *). Wyraziłem błąd, przepraszam. Jeszcze raz dziękuję :) –
Zobacz ten link https://stackoverflow.com/a/46705242/1770868 –