[Android] Tab 구성 시 주의사항Mobile/Android2022. 8. 24. 14:27
Table of Contents
반응형
FragmentStatePagerAdapter의 getItem() 이 두 번 호출될 때
Viewpager를 사용하여 Tab을 구성하였을 때 FragmentStatePagerAdapter를 사용하였다. 탭에 추가한 Fragment 와는 상관없이 getItem()
이 두 번 호출이 되어서 Fragment를 두 번 로드하게 되는 현상 때문에 문제가 생겨 꼬이게 되었다. 이럴 경우 Fragment 화면이 보일 때와 보이지 않을 때 setUSerVisiblaHint()
함수를 사용하여 처리하는데 탭에 추가한 Fragment 가 전부 로드되지 않았다. 어중간하게 두 개의 화면만 로드되었기 때문에 다른 탭을 누르거나 다시 돌아왔을 때 setUSerVisiblaHint()와
onCreateView()
함수가 비정상적으로 호출되는 바람에 코딩을 하는데 애먹었다.
해결 방법은 아래 코드처럼 ViewPagerAdapter에 Fragment를 3개 추가하였을 때 setOffscreenPageLimit()
함수에 viewPager 에 추가한 Fragement의 수를 지정한다. 그리고 화면이 미리 로드되게 하면 getItem()
은 Fragement 수 만큼(예: 3번) 호출되지만 앞에서 문제 되는 것을 해결할 수 있었다.
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tabs)
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
setupViewPager();
}
private void setupViewPager() {
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragment(new MobileFragment());
viewPagerAdapter.addFragment(new LteFragment());
viewPagerAdapter.addFragment(new WifiFragment());
viewPager.setOffscreenPageLimit(viewPagerAdapter.getCount());
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}
}
반응형
'Mobile > Android' 카테고리의 다른 글
[Android] Yahoo Weather API를 이용하여 날씨정보 가져오기 (0) | 2022.09.23 |
---|---|
[Android Studio] 설치 및 주요 기능 정리 (0) | 2022.09.02 |
[Android Studio] lombok 사용 방법 (0) | 2022.09.01 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!