-
[ Android ] Fragment Toolbar에서 back button 동작 안 하는 오류Android 2020. 5. 19. 18:25
CatServant
특정 Fragment에서 Toolbar에 Backbutton을 추가한 뒤 Toolbar 내에 있는 BackButton을 Click 했을 때 호출했던 Fragment로 돌아가지 않는 문제가 있었다.
Fragment에서 Fragment 호출하기
public void replaceFragment(Fragment fragment) { FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.main_container, fragment).addToBackStack(null).commit(); }
해당 프로젝트에서는 mainView Fragment에서 settingView Fragment를 호출해야 하는 방식으로 동작했다.
Back Button을 눌렀을 때 기존에 있었던 Fragment로 돌아오기 위해서 addToBackStack(null) 을 추가했다.
addToBackStack(null) : Stack에 이전 Fragment를 쌓아두는 것이다.
Fragment에서 Activity에 있는 Toolbar의 Back Button 보여주기 / 사라지게 하기
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_setting, container, false); showBackButton(); return rootView; } private void showBackButton() { ((MainActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); this.setHasOptionsMenu(true); } private void disappearBackButton() { ((MainActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false); } @Override public void onPause() { super.onPause(); disappearBackButton(); }
각각의 Fragment마다 Toolbar에 나타나는 기능이 달랐으면 했다. SettingView에서는 BackButton이 필요했지만 이외의 화면에서는 필요없어서 해당 뷰가 생성될 때와 사라질 때 Back Button을 생성/삭제하였다.
Fragment Toolbar에서 Back Button 동작 안 하는 오류
하단에 있는 Back Button을 누르면 기존에 보고 있던 Fragment로 돌아왔지만 Toolbar에 있는 Back button을 누르면 돌아오지 않는 오류가 있었다. 이는 Setting Fragment에 아래의 코드를 넣어주자 해결되었다.
@Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { super.onOptionsItemSelected(item); ((MainActivity)getActivity()).onBackPressed(); return true; }
출처
'Android' 카테고리의 다른 글
[ Android ] Git-hub 오픈 소스 import 해서 사용하기 (0) 2020.06.18 [ Android ] D-Day 계산 오류 (0) 2020.05.22 [ Android ] 위험 권한 (0) 2020.05.18 [ Android ] 브로드캐스트 수신자 (0) 2020.05.18 [ Android ] 스플래시 화면 ( 로딩 화면 ) (0) 2020.04.02