Je développe une application qui implique des fragments. Il y a trois fragmentsTrouver une bonne façon de supprimer la recherche sur le fragment backback
- Liste des objets fragment
- Détails de l'article fragmentent
- Recherche/fragment Chargement
Tout fonctionne bien jusqu'à ce que la presse utilisateur onbackbutton. Je voudrais montrer à l'utilisateur le fragment précédent avant que le fragment de recherche ne soit affiché. J'ai essayé quelques solutions, mais aucune d'entre elles ne semble fonctionner pour moi. J'ai essayé de retirer le fragment de recherche manuellement de retour coincé mais j'ai eu la situation bizarre que le fragment précédent et le fragment actuel ont été montrés en même temps.
C'est la fonction qui remplace les fragments de l'activité principale
public void replaceFragment(Class<?> fragClass, Bundle b)
{
Fragment bf = null;
try
{
bf = (Fragment) fragClass.newInstance();
}
catch (Exception e)
{
e.printStackTrace();
}
if (b != null)
{
bf.setArguments(b);
}
Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
String backStateName = bf.getClass().getSimpleName();
if (f != null && backStateName.equals(f.getClass().getSimpleName()))
{
return;
}
FragmentManager manager = getSupportFragmentManager();
_currentFragment = bf;
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_left, R.anim.exit_to_right);
if(backStateName.equals(LoadingFragment.class.getSimpleName()))
{
ft.replace(R.id.fragment_container, bf).addToBackStack(null).commit();
}
else
{
ft.replace(R.id.fragment_container, bf).addToBackStack(backStateName).commit();
}
}
fonction onbackpress
@Override
public void onBackPressed()
{
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START))
{
drawer.closeDrawer(GravityCompat.START);
}
else
{
super.onBackPressed();
}
}
Au lieu de cela, maintenir tout votre fragment dans la pile et la méthode utiliser add() au lieu de remplacer() de Fragment Transaction ajouter fragment.It vous donnera un contrôle total sur le cycle de vie de navigation. –