Saya memiliki beberapa fragmen di dalam suatu aktivitas. Pada sebuah tombol klik saya memulai sebuah fragmen baru, menambahkannya ke backstack. Saya secara alami mengharapkan onPause()
metode Fragmen saat ini dan onResume()
Fragmen baru untuk dipanggil. Yah itu tidak terjadi.
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();
}
}
Apa yang saya harapkan, adalah,
- Ketika diklik, LoginFragment akan diganti dengan
HomeFragment ,
onPause()
dari LoginFragment , danonResume()
dari HomeFragment dipanggil - Ketika kembali ditekan, HomeFragment adalah poped keluar dan LoginFragment terlihat, dan
onPause()
dari HomeFragment danonResume()
dari LoginFragment dipanggil.
Apa yang saya dapatkan adalah,
- Ketika tombol diklik, HomeFragment dengan benar mengganti LoginFragment , onResume () dari HomeFragment dipanggil, tetapi onPause () dari LoginFragment tidak pernah dipanggil.
- Saat ditekan kembali, HomeFragment muncul dengan benar untuk menampilkan LoginFragment , onPause () dari HomeFragment dipanggil, tetapi onResume () dari LoginFragment tidak pernah dipanggil.
Apakah ini perilaku normal? Mengapa onResume()
dari LoginFragment tidak mendapatkan disebut ketika saya menekan tombol kembali.