我在一个活动中有多个片段.点击一个按钮,我开始一个新的片段,将其添加到Backback中.我自然希望调用当前片段的onPause()
个方法和新片段的onResume()
个方法.但事实并非如此.
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();
}
}
家庭碎片.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被替换为
- 当按BACK时,弹出HomeFragment,弹出LoginFragment
已见,HomeFragment项中的
onPause()
项和LoginFragment项中的onResume()
项 会接到电话.
我得到的是,
- 当点击按钮时,HomeFragment正确替换
- 向后按时,HomeFragment正确弹出以显示 LoginFragment,调用onPause()(共HomeFragment个),但调用onResume() 从没有人打过电话给LoginFragment的人.
这是正常行为吗?为什么当我按下后退按钮时,LoginFragment中的onResume()
没有被呼叫.