FragmentPagerAdapter를 사용할 경우 ViewPager와 연동을 합니다.
이때 특정 Page에 Fragment를 갱신하고 싶어 모두 알고 계시는
notifyDataSetChanged 함수를 호출 합니다.
하지만! 위 함수를 호출 하더라도 갱신이 되지 않죠!!
이럴 경우 아래와 같은 방법을 해보세요.
1. FragmentPagerAdapter 대신 FragmentStatePagerAdapter를 사용한다.
2. getItemPosition 함수를 오바라이딩 한다.
3. getItemPosition 함수를 이용하여 특정 Fragment만 갱신 한다.
@Override
public int getItemPosition(Object object) {
if (여기는 특정 Fragement를 파악할 수 있는 조건) {
return POSITION_NONE;
} else {
return super.getItemPosition(object);
}
}
저 조건으로 여러가지를 넣을 수 있습니다.
1. Fragment에 setTag를 했다가 해당 Tag를 이용해서 찾고자 하는 Fragment인지 판단
2. Fragment를 상속하여 다양한 Fragment로 변경하여 instanceof 를 통하여 구분
3. Fragment에 특정 View가 존재하는지 파악
위 방법대로 셋팅을 하면 특정 Fragment에 대해 제어가 가능 합니다.
getItemPosition은 ViewPager에 정의 된 만큼 모두 돌아가니 꼭 조건문을 넣어서 사용하세요!!
참고 : http://stackoverflow.com/questions/10849552/update-viewpager-dynamically
댓글 분을 위해 만든 테스트 소스 입니다.
https://github.com/gorchg/FragmentStatePagerAdapter.git
참고하세요.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] Textview에 link 달기 (0) | 2015.09.14 |
---|---|
[Android] Fragment 사용시 주의점. (0) | 2015.09.04 |
[Android] ImageView 사이즈 (0) | 2015.09.03 |
[Android] 현재 실행중인 App 체크 (2) | 2015.08.31 |
[Android] Textview Copy - Clipboardmanager (0) | 2015.08.28 |