在 Fragment 中如果使用了 ViewPager + Fragment ,會出現第二次進入 Fragment 後,會整個 Fragment 空白的問題。
整個頁面的 Fragment , 我們稱為 ViewPagerFragment
在 ViewPager 中的 Fragment , 我們稱為 PagerItemFragment
那為什麼會出現這個問題呢?
在第一次載入 ViewPagerFragment 時,ViewPagerAdapter 也會載入 PagerItemFragment #1 跟 PagerItemFragment #2 ,
並在離開 ViewPagerFragment 時會執行 3 個 Fragment 的 onDestroyView
而在第二次載入 PageFragment 時,則會只會執行 ViewPagerFragment 的 onCreateView(),但卻不會執行 PagerItemFragment #1 跟 PagerItemFragment #2 的 onCreateView()
怎麼解決這個問題呢?
讓 Android 重新掛載原本的 View
在 ViewPagerFragment 中的 onCreateView() 加上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
if (mView != null) {
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
}
return mView;
}
mView = inflater.inflate(R.layout.fragment, false);
...
return mView;
}
0 意見:
張貼留言