ฉันมีหลายส่วนในกิจกรรม บนปุ่มคลิกฉันกำลังเริ่มแฟรกเมนต์ใหม่เพิ่มลงในแบ็คสแต็ค ฉันคาดว่าจะมี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();
}
}
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จะ poped ออกมาและLoginFragmentจะเห็นและ
onPause()
ของHomeFragmentและonResume()
ของLoginFragment ได้รับเรียกว่า
สิ่งที่ฉันได้รับคือ
- เมื่อคลิกที่ปุ่มHomeFragmentจะถูกแทนที่อย่างถูกต้อง LoginFragment , onResume () ของHomeFragmentเรียกว่า แต่ onPause () ของLoginFragmentไม่เคยถูกเรียก
- เมื่อกดกลับหน้าแรกHomeFragmentอย่างถูกต้อง popping เพื่อเปิดเผย LoginFragment , onPause () ของHomeFragmentได้รับเรียก แต่ onResume () ของLoginFragmentไม่เคยได้รับการเรียก
นี่เป็นพฤติกรรมปกติหรือไม่ ทำไมเป็นonResume()
ของLoginFragmentไม่ได้รับการเรียกว่าเมื่อกดปุ่มย้อนกลับ