У меня есть несколько фрагментов внутри деятельности. При нажатии кнопки я начинаю новый фрагмент, добавляя его в стопку. Естественно, я ожидал, что будет вызван метод 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 и отображается LoginFragment, а также
onPause()
из HomeFragment иonResume()
из LoginFragment. называется.
Я получаю,
- При нажатии кнопки HomeFragment правильно заменяет LoginFragment, вызывается onResume () HomeFragment, но onPause () LoginFragment < / strong> никогда не вызывается.
- При обратном нажатии HomeFragment появляется правильно, показывая LoginFragment, вызывается onPause () из HomeFragment, но onResume () из LoginFragment никогда не вызывается.
Это нормальное поведение? Почему onResume()
из LoginFragment не вызывается, когда я нажимаю кнопку "Назад".