미치겠습니다
1주일삽질했는데 원일을 알수가 없어요 ~
ㅠㅠ
소스코드는 대략 이렇습니다
버튼을 클릭할때 약간의 소스 입니다 소스 클릭시 파라미터를 seting 해서
아답터에게 넘겨 주고 이 아답터 내에서 getItem 을 이용하여 동적인 fragment 를 생성하여 paging 을 하는 방식입니다.
============ button event ================
Param p = new Param();
p.setCompany_id(code);
p.setDisplay("1");
/** 파라미터를 한곳에서 셋팅하자 **/
mPager = (ViewPager) activity.findViewById(R.id.pager);
mAdapter = new MyAdapter(activity.getSupportFragmentManager() );
if ( mPager.getAdapter() != null){
mAdapter = (MyAdapter) mPager.getAdapter();
mAdapter.getFragments().clear();
mPager.removeAllViews();
mAdapter.notifyDataSetChanged();
}
mAdapter.setParam(p);
mAdapter.setActivity(activity);
mPager.setAdapter(mAdapter);
======================= adapter 부분 ========================= FragmentPagerAdapter 상속받아 구현
public Fragment getItem(int position) {
System.out.println("중간"+param.getCompany_id());
Fragment instance = new MyFragment().newInstance(position,this.param,getActivity());
getFragments().add(instance);
return instance;
}
다음과 같이 인스턴스를 추가 생성하여 페이징이 첫호출시에는 잘 이루어지는데요.
다른 버튼을 클릭시 첫 소스를 다시 한번 호출하여 새로운 파라미터를 setting 하여 fragment 를 생성하여야 하는데요
이렇게 할시
기존 처음에 달려있던 fragment 가 사라지지 않고 계속 유지되는 현상입니다.. clear 하고 notify 해도
해결이 되지 않더라고요..
정확히 굼굼한건 getItem 이 어떤 조건일때 호출이 되는지가 가장 굼굼합니다
처음 버튼을 누를시에는 호출이 2번 되지만
다음번에 누를시에는 되지 않는데요. setItem 의 호출 시기를 아는것도 원인해결이 많은 도움이 될것 같아요
api 호출 부분은 알려 드릴수가 없으나,
다른 부분에 대해서 첨부 할게요 도와 주세요 .
ㅠㅠ
ViewPager는 FragmentPageAdapter의 instantiateItem(position)을 호출하여 현재 position 의 Fragment 객체를 가져갑니다.
instantiateItem(position)의 구현을 보면, 먼저 FragmentManager에서 이미 해당 position으로 생성된 Fragment가 있는지 검사해서 있으면 그걸 반환하고 없을때에만 getItem(position)을 호출하여 새로 생성된 Fragment를 가져갑니다.
따라서 각 position마다 한번씩만 getItem()이 호출됩니다.
Fragment를 동적으로 매번 새로 생성하는 것이 어떤 의미가 있는지 모르겠네요. 해당 Fragment에 적절히 값을 전달해주는 것이 더 맞을 것 같은데요.




FragmentPagerAdapter는 FragmentManager로 부터 받은 Fragment들을 절대 지우지 않습니다. 상기와 같이 동적인 fragment들을 handling하기 위해서는 FragmentStatePagerAdapter를 사용하셔야 합니다.