アクティビティ内に複数のフラグメントがあります。ボタンをクリックすると、新しいフラグメントが開始され、バックスタックに追加されます。私は当然、現在の Fragment と新しい FragmentのonPause()
メソッドが呼び出されることを期待していました。onResume()
まあ、それは起こっていません。
ログインフラグメント.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に置き換えられ、
LoginFragmentが呼び出され、HomeFragmentが呼び出されます
onPause()
onResume()
- 戻るを押すと、HomeFragmentがポップアウトされてLoginFragmentが表示され
onPause()
、HomeFragmentとLoginFragmentonResume()
が 呼び出されます。
私が得ているのは、
- ボタンをクリックすると、HomeFragmentが LoginFragment を正しく置き換え 、 HomeFragmentのonResume () が呼び出されますが、 LoginFragment のonPause () は呼び出されません。
- 戻ると、HomeFragmentが正しくポップして LoginFragment が表示され、 HomeFragmentのonPause () が呼び出されますが、 LoginFragment の onResume() は呼び出されません。
これは正常な動作ですか?戻るボタンを押したときに LoginFragment が呼び出されないonResume()
のはなぜですか。