2016-01-10 1 views
1

Lorsque je lance mon application, mon premier fragment est lancé. Dans ce fragment, je clique sur un bouton, qui remplace le fragment original par un nouveau. Lorsque je clique sur ce 2e fragment, il ne revient pas au premier, mais ferme plutôt l'application et retourne à l'écran d'accueil de mon téléphone. Est-ce que quelqu'un sait pourquoi?Revenir au fragment précédent

Voici le fragment original qui est lancé dans onCreate Méthode de mon activité:

public class Main extends AppCompatActivity{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     LoginFragment firstFragment = new LoginFragment(); 

     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     ft.replace(R.id.content_frame, firstFragment); 
     ft.addToBackStack(null); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.commit(); 

    } 
}} 

Voici le code de ce fragment, qui contient le bouton qui ouvre le 2ème Fragment:

public class LoginFragment extends Fragment implements View.OnClickListener { 
private FragmentTransaction ft; 
private Button registerButton; 

public LoginFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_login, container, false); 

    registerButton = (Button)view.findViewById(R.id.register_button); 
    registerButton.setOnClickListener(this); 

    return view; 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.register_button:{ 
      RegisterFragment registerFragment = new RegisterFragment(); 
      ft = getFragmentManager().beginTransaction(); 
      ft.replace(R.id.content_frame, registerFragment); 
      ft.addToBackStack(null); 
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
      ft.commit(); 
      break; 
     } 
    } 
}} 

Le 2ème fragment lancé ne contient rien pour le moment. Peu importe, quand je repasse sur mon téléphone quand je suis au 2e fragment, il ne revient pas à mon premier.

+0

Pour autant que je peux voir, vous avez oublié de mettre en œuvre la méthode 'onBackPressed' de l'activité du conteneur. Voir ici pour plus de détails: http://stackoverflow.com/questions/26693754/fragment-addtobackstack-and-popbackstackimmediate-not-working – thetonrifles

+0

C'est tout! J'accepte votre réponse si vous voulez retaper. Merci! –

Répondre

1

Il vous semble juste oublié de mettre en œuvre la méthode onBackPressed de l'activité de conteneurs:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() > 0){ 
     getFragmentManager().popBackStack(); 
    } else { 
     super.onBackPressed(); 
    } 
}