이번에 ViewPager2 + FragmentStateAdapter + BottomNavigationView를 구현하여 화면을 구성했다..
구글에 널려있는 코드로 FragmentStateAdapter를 아래와 같이 구현했다.
// Sample code이기 때문에 NUM_PAGES와 실제 switch문의 차이는 있습니다.
private final int NUM_PAGES = 4;
class fragmentAdapter extends FragmentStateAdapter {
public fragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 0:
return new SampleFragment();
case 1:
return new TestFragment();
default:
return null;
}
}
@Override
public int getItemCount() {
return NUM_PAGES;
}
}
BottomNavigationView로 하단 메뉴를 구현했기 때문에 막 이래저래 눌러보는데 갑자기 CreateFragment를 한번 더 실행하면서 SampleFragment가 다시 onCreateView를 실행하고 webView가 reload가 되는 기현상이 생겼다.. 내 예상과는 완전 다른 현상... SampleFragment에는 webView가 있었는데 왜 이런 현상이 있지.. 또 어떻게 해결해야하지 싶어서 고민해봤는데.. 아주 쉽게 해결했다.
코드를 아래와 같이 구현했다.
private final int NUM_PAGES = 4;
viewPager2.setAdapter(new fragmentAdapter(fragmentManager, getLifecycle()));
viewPager2.setOffscreenPageLimit(NUM_PAGES);
이렇게 하니까 더이상 페이지를 갱신하거나 Adapter를 초기화 하지 않고 기존의 것을 끌어다가 보여줬다.
'Android > Technic' 카테고리의 다른 글
ViewPager2의 swipe listener (Call back) (0) | 2021.11.05 |
---|---|
BottomNavigationView + ViewPager2에서 swipe 안되게 하기 (0) | 2021.11.05 |
Html.fromHtml()의 Deprecated 교체 (0) | 2021.10.27 |
android.app.AlertDialog.THEME_DEVICE_DEFAULT_LIGHT 대체하기 (2) | 2021.10.20 |
Bottom Navigation View에서 tooltip 없애기 (2) | 2021.10.20 |
댓글