Android 에서 A Fragment -> B Fragment 화면 전환 후,
B Fragment 에서 뒤로가기를 누르면 다시 A Fragment 를 호출하는 방법이다.
인터넷에보면 다 transaction.addToBackStack(null); 하면 된다고 하는데.. 안돼서 찾아보니,
replace 했을 때는 교체를 한 것이기 때문에 Back버튼 이벤트에 대해 자동으로 뒤로가기가 되지 않는다고 한다. (출처)
그러므로 Activity.onBackPressed 를 Override 를 해야하는데, 그 방법에 대해 기술한다 !
1. MainActivity 하단에 메소드 추가
//뒤로가기 버튼을 뺏어올 리스너 등록
public interface onKeyBackPressedListener {
void onBackKey();
}
private onKeyBackPressedListener mOnKeyBackPressedListener;
public void setOnKeyBackPressedListener(onKeyBackPressedListener listener) {
mOnKeyBackPressedListener = listener;
}
//메인에서 토스트를 띄우며 종료확인을 하기 위해 필드선언
EndToast endToast = new EndToast(this);
@Override
public void onBackPressed() {
if (mOnKeyBackPressedListener != null) {
mOnKeyBackPressedListener.onBackKey();
} else {
//쌓인 BackStack 여부에 따라 Toast를 띄울지, 뒤로갈지
if(getSupportFragmentManager().getBackStackEntryCount()==0){
//* 종료 EndToast Bean 사용
endToast.showEndToast("종료하려면 한번 더 누르세요.");
}else{
super.onBackPressed();
}
}
}
2. 뒤로가기 버튼을 누를 LoginFragment 하단에 메소드 Override
//BackStack 으로 뒤로가기 버튼 누르면 전 화면으로 이동하기 위함
@Override
public void onBackKey() {
MainActivity activity = (MainActivity) getActivity();
activity.setOnKeyBackPressedListener(null);
activity.onBackPressed();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
((MainActivity)context).setOnKeyBackPressedListener(this);
}
3. 아 그리고 꼭!!!!! 뒤로가기 버튼을 누를 Fragment 에서 addToBackStack() 을 해줘야 한다.
transaction.addToBackStack(null);
반응형
'MOBILE > Android' 카테고리의 다른 글
안드로이드 현재 내 위치값(좌표값) 구하기 (0) | 2018.08.05 |
---|---|
안드로이드 Browser (Internet) 띄우기 (0) | 2018.08.03 |
안드로이드 지문인식 사용하는 방법 (2) | 2018.08.03 |
안드로이드 ImageView 에 이미지를 URL로 가져와서 뿌려주는 방법 (4) | 2018.08.03 |
안드로이드 원하는 뷰 좌우로 흔들리게 애니메이션 설정하는 방법 (0) | 2018.08.03 |
댓글