마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fragment back stack 질문드립니다.

+2 추천

프래그먼트를 back stack 에 쌓이게 해서 하드웨어 백버튼을 눌렀을때 전프래그먼트 화면을 보여줄려고하는데요.

addToBackStack(null)을 해도 안먹힙니다. 혹시 하나의 FragmentManager 와 FragmentTransaction 에서 관리해야하나요?

  @Override
    public void onNavigationDrawerItemSelected(int position) {
        FragmentManager fragmentManager = getFragmentManager();
        switch (position) {
            case 0:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new xxxx())
                        .addToBackStack(null)
                        .commit();
                break;
            case 1:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new xxxx())
                        .addToBackStack(null)
                        .commit();
                break;
            case 2:
                removeAllPreferences();
                fragmentManager.beginTransaction()
                        .replace(R.id.container, new xxxx())
                        .addToBackStack(null)
                        .commit();
                break;
        }
    }

interface 부분중 하나입니다. 구현된 곳은 activity 입니다.

우랴 (3,680 포인트) 님이 2015년 4월 1일 질문
우랴님이 2015년 4월 1일 수정

1개의 답변

0 추천

replace 했을 때는 교체를 한 것이기 때문에 Back버튼 이벤트에 대해 자동으로 팝 백 스택(뒤로가기)가 되지 않습니다.

add 했을 때는 더해진 것으로 백 버튼에 대해 자동 pop back stack이 됩니다.

 

굳이 여러가지 문제로 replace를 쓰셔야 겠다면

Activity.onBackPressed 등에서 getFragmentManager().popBackStack(); 등으로 수동으로 구현하셔야 합니다.

getFragmentManager().getBackStackEntryCount() 로 스택 갯수를 유의해서 처리하세요.

스택 갯수가 없다면 pop이 아닌 액티비티 종료를 해야하니까요.

칠리님 (10,910 포인트) 님이 2015년 4월 1일 답변
스택 다 꺼냈으면 super 호출하세요
해결했습니다. 감사합니다 ^^
...