Android Fragment De Changer Le Titre
J'ai un problème avec mon fragments. En gros, j'ai une application qui a une navigation tiroir et 4 boutons sur l'activité. Lors de chaque bouton est pressé, il va afficher un autre fragment. Le problème que j'ai c'est que je veux afficher le titre exact dans l'ActionBar. Je peux afficher l'élément sélectionné à partir de la navigation sur l'ActionBar. Mais quand j'ai appuyé sur le bouton pour passer à un autre fragment, je ne peux pas afficher le titre sur l'ActionBar. Des idées?
Voici mon exemple de code:
HomeActivity.class
private void displayView(final int position) {
//update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new MyProfileFragment();
break;
case 2:
fragment = new AboutFragment();
break;
default:
break;
}
if (fragment != null) {
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
//update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
drawer.closeDrawer(mDrawerList);
} else {
//error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
HomeFragment:
public class HomeFragment extends Fragment {
public HomeFragment() {
}
CardView card_cart, card_scan, card_categories, card_about;
Intent i;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
initControls(rootView);
return rootView;
}
private void initControls(View rootView) {
card_cart = (CardView) rootView.findViewById(R.id.card_cart);
card_scan = (CardView) rootView.findViewById(R.id.card_scan);
card_categories = (CardView) rootView.findViewById(R.id.card_categories);
card_about = (CardView) rootView.findViewById(R.id.card_about);
card_categories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = new Intent(getActivity(), CategoriesActivity.class);
startActivity(i);
}
});
card_cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyCartFragment nextFrag = new MyCartFragment();
getFragmentManager().beginTransaction()
.replace(R.id.frame_container, nextFrag)
.addToBackStack(null)
.commit();
}
});
card_about.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AboutGrabHutFragment aboutFrag = new AboutGrabHutFragment();
getFragmentManager().beginTransaction()
.setBreadCrumbTitle(getResources().getString(R.string.about))
.replace(R.id.frame_container, aboutFrag)
.addToBackStack(null)
.commit();
}
});
card_scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = new Intent(getActivity(), ScanActivity.class);
startActivity(i);
}
});
}
Dans le HomeFragment les 4 boutons de être trouvé. Sur un clic de bouton, vont à l'autre fragment. Je peux afficher que l'utilisation de ce:
card_about.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AboutGrabHutFragment aboutFrag = new AboutGrabHutFragment();
getFragmentManager().beginTransaction()
.setBreadCrumbTitle(getResources().getString(R.string.about))
.replace(R.id.frame_container, aboutFrag)
.addToBackStack(null)
.commit();
getActivity().setTitle("About");
}
});
Mais le problème est quand je reviens, le titre est encore Sur. J'espère que quelqu'un sait comment résoudre ce problème. Merci.
OriginalL'auteur | 2015-01-13
Vous devez vous connecter pour publier un commentaire.
Sur le fragment de la onCreateView() la méthode, appelez le setTitle("") la méthode de votre Activité Principale. De cette façon, vous n'avez pas de cas besoin de vérifier pour un retour de la conférence de presse.
cela a fonctionné pour moi
eg***
Mise à jour:
vous pouvez modifier le titre, par substitution de la
onResume
méthode. Et pour le côté sécuritaire, vous pouvez également remplacersetUserVisibleHint
et de changer le titre lors de l'fragmentisVisibleToUser
.S'il vous plaît marquer comme acceptée si cela a fonctionné pour vous.
OriginalL'auteur Sachin Rao
J'ai utilisé un onBackStackChangedListener dans mon MainActivity et de l'utiliser pour mettre à jour al sortes de choses lorsque vous naviguez dans l'application. Vous êtes déjà en modifiant manuellement le titre donc, essayez quelque chose comme ceci :
Avez-vous de l' @Override OnBackPressed de la fonction et de faire face à la backstack tout en appuyant sur le dos?
Vérifier la mise à jour de réponse, il contrôle la backstack tout en appuyant sur le bouton retour. BaseFragment est ma classe personnalisée pour mes Fragments, donc dans votre cas, il serait probablement Fragment.
Barnes a fait de cette aide vous / ou avez-vous trouvé une autre solution?
OriginalL'auteur Jordi Sipkens