J'ai trois fragments A, B et c dans une activité, l'activité a une barre d'outils avec titre de vue de test.Comment savoir si un fragment est actif ou visible?
Maintenant que je navigue d'un fragment à l'autre, je veux changer le texte de l'affichage du texte en fonction du fragment affiché.
Pour ce dans le fragment B et C Je reçois la barre d'outils principale activité et la vue du texte et en changeant son titre comme celui-ci:
final Toolbar toolbar = (Toolbar) ((MainActivity) getActivity()).findViewById(R.id.toolbar);
((MainActivity) getActivity()).setSupportActionBar(toolbar);
TextView title = (TextView) getActivity().findViewById(R.id.textView_Title);
title.setVisibility(View.VISIBLE);
title.setText(R.string.profile);
Cela fonctionne très bien. Mais quand je reviens au fragment principal, je veux changer de nouveau le titre mais ça ne change pas.
J'ai essayé de le mettre en mode onCreate d'activité principale, et comme celui-ci:
@Override
public void onBackPressed() {
DashboardFragment test = (DashboardFragment) getSupportFragmentManager().findFragmentByTag("DASHBOARD_FRAGMENT");
if (test != null && test.isVisible()) {
//DO STUFF
title = (TextView) findViewById(R.id.textView_Title);
title.setVisibility(View.VISIBLE);
title.setText(R.string.dashboardTitle);
}
else {
//Whatever
}
// Do nothing if the back button is disabled.
if (!mBackPressCancelled) {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStackImmediate();
}
else {
super.onBackPressed();
}
}
}
Mais avec cela, il changera son nom à titre principal des fragments même fragment B est visible.
Comment puis-je faire cela. S'il vous plaît aider. Je vous remercie.
EDIT:
MainFragment:
fragmentManager = getSupportFragmentManager();
DashboardFragment fragment1 = new DashboardFragment();
Bundle bundle = new Bundle();
fragment1.setArguments(bundle);
fragmentManager.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().replace(R.id.frame, fragment1, "DASHBOARD_FRAGMENT").commitAllowingStateLoss();
Un fragment:
fragmentManager = ((MainActivity)(mContext)).getSupportFragmentManager();
ProfileFragment fragment1 = new ProfileFragment();
Bundle bundle = new Bundle();
fragment1.setArguments(bundle);
fragmentManager.beginTransaction().add(R.id.frame, fragment1, "PROFILE_FRAGMENT").addToBackStack("B").commit();
fragment B
fragmentManager = getActivity().getSupportFragmentManager();
ProfileEditFragment fragment1 = new ProfileEditFragment();
Bundle bundle = new Bundle();
fragment1.setArguments(bundle);
fragmentManager.beginTransaction().add(R.id.frame, fragment1, "PROFILE_EDIT_FRAGMENT").addToBackStack("C").commit();
En bref, vous voulez changer le titre de la barre d'outils en fonction du fragment droit? –
vérifiez ceci: https://stackoverflow.com/a/33123356/6021469 –