smilevchy
1/27/2016 - 8:33 AM

Fragment which will reuse previous inflated root view , which can save memory. So poor ......

Fragment which will reuse previous inflated root view , which can save memory. So poor ......

public class PoolFragment extends Fragment {
    private boolean isFirstIn = true;
    private View rootView;
    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        preInitData();  
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // 解决 Fragment 多次调用 onCreateView 问题
        if (rootView != null) {
            ViewGroup parent = (ViewGroup) rootView.getParent();
            if (parent != null) {
                parent.removeView(rootView);
            }
        } else {
            rootView = inflater.inflate(R.layout.fragment, container, false);
            initChildView(rootView);
        }
        
        if (isFirstIn) {
            isFirstIn = false;
            
            // load data here
            loadData();
        }
        
        return rootView;
    }
        
}