Фрагмент onResume ()и onPause ()не вызывается в бэкстеке

У меня есть несколько фрагментов внутри активности. По нажатию кнопки я начинаю новый фрагмент, добавляя его в стопку. Естественно, я ожидал вызова метода onPause()текущего фрагмента и onResume()нового фрагмента. Ну этого не происходит.

Логинфрагмент.java

public class LoginFragment extends Fragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      final View view  =   inflater.inflate(R.layout.login_fragment, container, false);
      final FragmentManager mFragmentmanager =  getFragmentManager();

      Button btnHome  = (Button)view.findViewById(R.id.home_btn);
      btnHome.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
           HomeFragment fragment    = new HomeFragment();
           FragmentTransaction ft2   =  mFragmentmanager.beginTransaction();
           ft2.setCustomAnimations(R.anim.slide_right, R.anim.slide_out_left
                   , R.anim.slide_left, R.anim.slide_out_right);
           ft2.replace(R.id.middle_fragment, fragment);
           ft2.addToBackStack(""); 
           ft2.commit();    
         }
      });
  }

  @Override
  public void onResume() {
     Log.e("DEBUG", "onResume of LoginFragment");
     super.onResume();
  }

  @Override
  public void onPause() {
    Log.e("DEBUG", "OnPause of loginFragment");
    super.onPause();
  }
}

HomeFragment.java

public class HomeFragment extends Fragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     final View view  =   inflater.inflate(R.layout.login_fragment, container, false);
  }

  @Override
  public void onResume() {
     Log.e("DEBUG", "onResume of HomeFragment");
     super.onResume();
  }

  @Override
  public void onPause() {
     Log.e("DEBUG", "OnPause of HomeFragment");
     super.onPause();
  }
}

Я ожидал, что

  1. При нажатии кнопки LoginFragment заменяется на HomeFragment , onPause()из LoginFragment и onResume()из HomeFragment вызывается
  2. При нажатии назад HomeFragment всплывает, а LoginFragment отображается. видел, и onPause()из HomeFragment и onResume()из LoginFragment вызывается.

Что я получаю,

  1. При нажатии кнопки HomeFragment правильно заменяет LoginFragment , onResume ()of HomeFragment вызывается, но onPause ()of LoginFragment никогда не вызывается.
  2. При обратном нажатии HomeFragment правильно появляется, чтобы показать LoginFragment , onPause ()из HomeFragment вызывается, но onResume ()of LoginFragment никогда не вызывается.

Это нормальное поведение? Почему onResume()из LoginFragment не вызывается, когда я нажимаю кнопку «Назад».

183
задан galvan 17 December 2015 в 09:15
поделиться