Manipulation de la pile arrière de fragments avec le tiroir de navigation
Je suis la mise en œuvre de la navigation tiroir et fonctionne bien. Donc je fais appel fragment sur la navigation tiroir cliquez et c'est aussi de travail et, de plus, je vais appeler un autre fragment de la page d'Accueil du fragment et de maintenir la pile de retour pour chaque fragment, mais le problème est de retour presse de l'enfant fragment je ne peux pas aller à la Maison fragment de page et juste de sortir de l'application. Je ne veux pas de cela. Ce que je veux Cliquer sur
Navigation Drawer->HomePageFragment->AnotherChild Fragment(On List Item click of HomePageFragment)
mais sur le dos appuyé sans aller jusqu'à Homepage
fragment de ses directement à la sortie avec l'application. Voici mon code: (In Fragment Activity with Navigation Drawer)
class SlideitemListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
updateDisplay(position);
}
}
private void updateDisplay(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new ScheduleFragment();
break;
case 1:
fragment = new Result_Fragment();
break;
case 2:
fragment = new Live_Match_Fragment();
break;
case 3:
//fragment = new Live_Match_Fragment();
break;
case 4:
fragment = new Team_Fragment();
break;
default:
break;
}
if (fragment != null) {
fragmentManager = getFragmentManager();
fragmentManager.popBackStackImmediate("0", 0);
int count = fragmentManager.getBackStackEntryCount();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack(String.valueOf(count)).commit();
Log.e("Count in Activiy", ""+count);
//update selected item and title, then close the drawer
setTitle(menutitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
//error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
Maintenant dans BackPressed()
dans FragmentActivity
.
@Override
public void onBackPressed() {
if (fragmentManager.getBackStackEntryCount() <= 1) {
finish();
return;
}
super.onBackPressed();
}
Maintenant d'appeler un autre enfant fragment de HomePage
fragment de Listview
élément, cliquez sur.
team_lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//TODO Auto-generated method stub
TeamDetailFragment myDetailFragment = new TeamDetailFragment();
FragmentManager fragmentManager = getFragmentManager();
int count = fragmentManager.getBackStackEntryCount();
Log.e("Count in Fragment", "" + count);
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction
.replace(R.id.frame_container, myDetailFragment)
.setTransition(
FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack(String.valueOf(count)).commit();
}
});
Alors, quelqu'un sait m'aider. De l'aide sera apprécier.
source d'informationauteur Piyush
Vous devez vous connecter pour publier un commentaire.
J'ai créé un exemple d'application sur GitHub, pour résoudre votre problème.
Télécharger Fragment De La Pile De Retour application
Il y a un problème avec imbriqué fragments dans android
https://code.google.com/p/android/issues/detail?id=40323
Android ne gère pas les dos de presse bien si les transactions ont été dans les fragments.
Pour dépasser cela, je suis en utilisant le correctif suivant à l'intérieur de Mon Activité
Je l'ai résolu de la manière suivante:
1ère solution
2ème solution
Ces vous permettent d'exploiter Android pile quand vous remplacez votre fragment:
Lorsque vous appuyez sur le bouton de retour à l'intérieur de votre fragment onBackPressed() la méthode de votre activité va être appelé si vous avez déclaré que..Donc la manipulation du bouton retour pour les fragments à l'intérieur de navigation tiroir peut être un de cette façon..
MainActvity
Fragment1
Maintenant, vous pouvez remplacer finish() pour fragmentManager.popBackStack(), la méthode de android.de soutien.v4.app.FragmentManager