Странное поведение для замены фрагментов в одной деятельности - PullRequest
0 голосов
/ 20 июня 2019

Я сталкиваюсь со странным поведением при замене фрагментов в том же упражнении, вот что происходит:

-У меня есть 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, я не могу понять, почему это происходит?

1 Ответ

1 голос
/ 20 июня 2019

Вы пропустили перерыв между распределительными коробками.

Ваш последний кодовый блок должен быть:

@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();
            }
break;
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();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...