Fragmentビューの再描画の問題
3430 ワード
AndroidでTabとViewPager+Fragmentを使用する場合、tabを切り替えるとviewが再描画され、ユーザー体験が非常に悪く、毎回ページを再ロードする方法があります.ルートViewを判断し、rootViewの状態に基づいてViewを再ロードするかどうかを判断する方法があります.
Fragmentを破棄する際にonDestroyViewで削除
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (cacheView == null) {
cacheView = inflater.inflate(R.layout.fragment_page, container, false);
assignViews(cacheView);
}
return cacheView;
}
Fragmentを破棄する際にonDestroyViewで削除
@Override
public void onDestroyView() {
super.onDestroyView();
// Fragment RootView ViewPager remove
// cacheView parent, parent, parent
if (null != cacheView) {
((ViewGroup) cacheView.getParent()).removeView(cacheView);
}
}
ページの再描画を防止しています.Fragmentのページデータ切り替えキャッシュについて、Viewpagerはデータをキャッシュする方法があります.viewPager.setOffscreenPageLimit(5);