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

ViewPager에 추가한 Fragment가 onResume시 NULL이 되는 현상

0 추천

안녕하세요. 3개의 Fragment 화면을 넣을  ViewPager를 생성하고 여기에 맞는 PagerAdapter를 생성하였습니다.

이때 PagerAdapter안에 들어갈 Fragment등록하였습니다. 각 Fragment 별 역할이 달라 Fragment를 생성하면서

이를 상위 액티비티의 Fragment 배열에 저장하였습니다. 처음에는 잘 돌아가다가 홈화면으로 나갔다가 다시

들어와 onResume을 타다보면 fragment들이 다 NULL이 되어있습니다. 

 

[1] Activity에서 아래와 같이 배열 선언

MainFragment mainFragment = new MainFragment[3];

 

[2] ViewPager에 Adapter로 선언할 PagerAdapter에서  Fragment를 아래와 같이 선언하고 상위 액티비티에 저장
 

public class PagerAdapter extends FragmentPagerAdapter
{
        public Context mContext;
 
        public PagerAdapter(FragmentManager fm, Context context)
        {
            super(fm);
            this.mContext = context;
        }
 
        @Override
        public Fragment getItem(int position) {
            mainFragment[position] = MainFragment.newInstance(position, mContext);
            return mainFragment[position];
        }

}


위와 같이 FragmentPagerAdapter에서 fragment를 생성하면 안되는것인가요? 정 안되면 onResume에서

fragment가 널이면 다시 생성해주면 되겠지만 Memory Leak이 발생할것 같은데 그것보다 Fragment를 

관리할수 있는 다른 방법이 있는지 궁금합니다. 고수님들께서 아신다면 조언 부탁드리겠습니다.

미카하이오 (380 포인트) 님이 2014년 12월 11일 질문

1개의 답변

0 추천
배열로 갖고있지 마시고
getitem 에서 생성해주세요
프래그먼트 라이프사이클은 fragmentpageradapter
가 관리하기 때문에 액티비티에서 참조하고 있어도
어댑터에서 죽일 수 있습니다
mamondebaltob (32,750 포인트) 님이 2014년 12월 11일 답변
...