我在一个活动中有多个片段。在一个按钮上,单击“我正在开始一个新片段”,将其添加到Backstack中。我自然希望可以调用onPause()当前Fragment和onResume()new Fragment 的方法。好吧,这没有发生。
LoginFragment.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();
  }
}我所期望的是
- 当用户点击按钮,LoginFragment被替换为
 HomeFragment,onPause()的 LoginFragment和onResume()的 HomeFragment被调用
- 当被压回,HomeFragment是POP操作并LoginFragment看到,和onPause()的HomeFragment和onResume()的LoginFragment 被调用。
我得到的是
- 单击按钮时,HomeFragment正确替换了 LoginFragment,onResume()的 HomeFragment被调用,但在onPause(的)LoginFragment永远不会被调用。
- 按下时,HomeFragment会正确弹出以显示 LoginFragment,将调用HomeFragment的 onPause(),但是会调用onResume() LoginFragment不会被调用。
这是正常行为吗?为什么当我按下“后退”按钮时onResume(),LoginFragment没有被调用。