Я сталкиваюсь со странным поведением при замене фрагментов в том же упражнении, вот что происходит:
-У меня есть signinFragment
, который является фрагментом по умолчанию в AhuthenticationActivity
.
-У меня есть интерфейс для переключения между фрагментами, когда я нажимаю на кнопку, как signUp
.
-Я реализую интерфейс в Activity и проверяю номер, переданный для функции интерфейса, затем открываю указанный фрагмент.
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_login, container, false);
ButterKnife.bind(this, rootView);
signInButton.setOnClickListener(view-> startActivity(new Intent(getActivity(), MainActivity.class)));
signUpTextView.setOnClickListener(view-> listener.switchFragment(Constants.SIGNUP_FRAGMENT));
forgetPasswordTextView.setOnClickListener(view-> listener.switchFragment(Constants.FORGET_PASSWORD_FRAGMENT));
return rootView;
}
@Override
public void switchFragment(int fragment) {
switch (fragment){
case Constants.SIGNUP_FRAGMENT: {
Log.d(TAG,"SignUP Launched"); // this shows SignUP Launched
//ForgetPassword Launched i don't know why?!
fragmentManager.beginTransaction().replace(R.id.Authentication_Activity_Container, signUpFragment).addToBackStack(TAG).commit();
}case Constants.FORGET_PASSWORD_FRAGMENT:{
Log.d(TAG,"ForgetPassword Launched"); //this works fine ForgetPassword Launched
fragmentManager.beginTransaction().replace(R.id.Authentication_Activity_Container, forgetPasswordFragment).addToBackStack(TAG).commit();
}
}
}
@Override
public void onBackPressed() {
if(fragmentManager.getBackStackEntryCount()>0){
fragmentManager.popBackStack(TAG, POP_BACK_STACK_INCLUSIVE);
}else {
super.onBackPressed();
}
}
что происходит, когда я нажимаю signUp
, Log
показывает signUp Launched
, затем ForgetPassword Launched
, а когда я нажимаю forgetPassword
, Log
показывает ForgetPassword Launched
, я не могу понять, почему это происходит?