2016-01-10 5 views
1

Когда я запускаю приложение, запускается мой первый фрагмент. В этом фрагменте я нажимаю кнопку, которая заменяет оригинальный фрагмент на новый. Когда я нажимаю на этот второй фрагмент, он не возвращается к первому, а закрывает приложение и возвращается на главный экран моего телефона. Кто-нибудь знает, почему?Возврат к предыдущему фрагменту

Вот оригинальный фрагмент, который запускается в OnCreate метод моей деятельности по:

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(); 

    } 
}} 

Вот код для этого фрагмента, который содержит кнопку, вызывающую 2-й фрагмент:

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; 
     } 
    } 
}} 

2-й фрагмент, который запущен, не содержит ничего прямо сейчас. Несмотря на это, когда я нажимаю на свой телефон, когда Im во 2-м фрагменте, он не возвращается к моему первому.

+0

Насколько я понимаю, вы забыли реализовать 'onBackPressed' метод в контейнере деятельности. См. Здесь для деталей: http://stackoverflow.com/questions/26693754/fragment-addtobackstack-and-popbackstackimmediate-not-working – thetonrifles

+0

Вот и все! Я принимаю ваш ответ, если вы хотите перепечатать его. Благодаря! –

ответ

1

Кажется, вы просто забыли реализовать onBackPressed метод в контейнере деятельности:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() > 0){ 
     getFragmentManager().popBackStack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
Смежные вопросы