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

Fragment replace 질문 합니다

0 추천
    List<Fragment> listOfFragments = new ArrayList<>();
    android.support.v4.app.FragmentTransaction trans = 
getSupportFragmentManager().beginTransaction();

    tabHost.setCurrentTab(0);

    if (my_menu_status) {
        listOfFragments.add(new Fragment3());
        listOfFragments.add(new Fragment2());

        trans.replace(R.id.view_pager, new Fragment3()).commit();

        my_menu_status = false;
    }else{
        listOfFragments.add(new Fragment1());
        listOfFragments.add(new Fragment2());

        trans.replace(R.id.view_pager, new Fragment1()).commit();

        my_menu_status = true;
    }

    MyFragmentPagerAdapter myAdapter = new MyFragmentPagerAdapter
(getSupportFragmentManager(), listOfFragments);
    viewPager.setAdapter(myAdapter);

    viewPager.setOnPageChangeListener(this);

    return true;
}

먼저, my_menu_status는 true입니다. 

그리고 viewPager는 처음에 fragment1과 fragment2로 이루어져 있습니다.

여기서 문제점이 하나 있는데, 처음 버튼을 눌러서 replace를 

실행시키고 나면 분명 fragment1 -> fragment3으로됩니다. 

근데 다시한번 누르면 fragment1의 view가 하나도 안나타나고 

fragment3의 레이아웃이 계속 유지가 됩니다. 

근데 제가 log를 이용해서 봤는데 분명히 fragement1의 onCreateView는 작동이 됩니다. 

어떻게 하면 fragment3으로 갔던 view_pager를 다시 fragment1로 오겠끔 할까요?

winteriscoming (360 포인트) 님이 2016년 2월 14일 질문
winteriscoming님이 2016년 2월 14일 수정

1개의 답변

0 추천
이게 원하는 대답인지는 모르겠지만

fragment는 FragmentTransaction을 사용해서 스택을 관리할수 있습니다.

fragment를 add 시키면 액티비티처럼 fragment가 쌓여있습니다.

스택에서 상위에 있는 fragment를 popBackStack()을 시키면 남아있는 fragment가 나오게 됩니다.

 

프레그먼트 스택으로 검색을하셔도 되고

아래 사이트에서 한번 참고해보세요

http://aroundck.tistory.com/716
캬옹이 (37,920 포인트) 님이 2016년 2월 15일 답변
...