활동 내부에 여러 조각이 있습니다. 버튼을 클릭하면 새 조각을 시작하여 백 스택에 추가합니다. 나는 onPause()
현재의 Fragment와 onResume()
새로운 Fragment 의 메소드가 자연스럽게 호출 될 것으로 예상했다 . 글쎄요.
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은 제대로 공개 보여주고있다 LoginFragment , onPause ()를의 HomeFragment가 호출되는하지만, onResume ()의 LoginFragment는 결코 호출되지됩니다.
이것이 정상적인 행동입니까? 왜 onResume()
의 LoginFragment이 내가 뒤로 버튼을 누를 때 호출 안한다.