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