Android fragments 当我从TabFragment使用LoaderManager启动片段时,为什么Tablayout和Viewpager会因NullpointerException而崩溃?

Android fragments 当我从TabFragment使用LoaderManager启动片段时,为什么Tablayout和Viewpager会因NullpointerException而崩溃?,android-fragments,nullpointerexception,android-viewpager,android-loadermanager,android-tablayout,Android Fragments,Nullpointerexception,Android Viewpager,Android Loadermanager,Android Tablayout,我将遵循的教程来实现滑动表格布局 它适用于空碎片 但是,我有3个带有LoaderManager和recyclerViews的片段,每个片段加载不同的数据。当第一次加载应用程序时,如果我在tabLayout上从第一个片段单击到第三个片段,而没有滑动或单击到第二个片段,则会崩溃。数据没有加载,因为它实现了LoaderManager,所以它从OnLoadFinished()方法开始实现。我看不到onCreate()。。或onCreateView()方法已执行。我该如何解决这个问题 My TabFrag

我将遵循的教程来实现滑动表格布局

它适用于空碎片

但是,我有3个带有LoaderManager和recyclerViews的片段,每个片段加载不同的数据。当第一次加载应用程序时,如果我在tabLayout上从第一个片段单击到第三个片段,而没有滑动或单击到第二个片段,则会崩溃。数据没有加载,因为它实现了LoaderManager,所以它从
OnLoadFinished()
方法开始实现。我看不到
onCreate()。。或onCreateView()
方法已执行。我该如何解决这个问题

My TabFragment:


public class TabFragment extends Fragment {

    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 3 ;
    private Context mContext;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        /**
         *Inflate tab_layout and setup Views.
         */
        View tabView =  inflater.inflate(R.layout.fragment_tab,null);
        tabLayout = (TabLayout) tabView.findViewById(R.id.tabs);
        viewPager = (ViewPager) tabView.findViewById(R.id.viewpager);

        /**
         *Set an Apater for the View Pager
         */
        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        /**
         * Now , this is a workaround ,
         * The setupWithViewPager dose't works without the runnable .
         * Maybe a Support Library Bug .
         */

        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);
                for (int i = 0; i < tabLayout.getTabCount(); i++) {
                    TabLayout.Tab tab = tabLayout.getTabAt(i);

                }
            }
        });

        return tabView;

    }

    class MyAdapter extends FragmentPagerAdapter{

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        /**
         * Return fragment with respect to Position .
         */

        @Override
        public Fragment getItem(int position)
        {
            switch (position){
                case 0 : return new TabFocusFragment();
                case 1 : return new TabFocusFragment();
                case 2 : return new TabFocusFragment();

            }
            return null;
        }

        @Override
        public int getCount() {

            return int_items;

        }


        @Override
        public CharSequence getPageTitle(int position) {

            switch (position){
                case 0 :
                    return "First";
                case 1 :
                    return "Second";
                case 2 :
                    return "Third";
            }
            return null;
        }
    }



    }



TabFocusFragment:

    public class TabFocusFragmentextends extends Fragment
    implements LoaderManager.LoaderCallbacks<Cursor>


    {


    private TabFocusAdapter mAdapter;
    private List<E> mList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        loadData();// never been executed,:(
        setHasOptionsMenu(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_tab_focus, container, false);

        loadData();
        setupRecyclerView();
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
    }



        @Override
        public void onLoadMore() {
    if(NeedLoad)
           loadData();
        }

        private void loadData() {
            //Reque

stData
        ……
    }


    private void setupRecyclerView() {
      …...

    }

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return new CursorLoader(mActivity, ContentProvider.createUri(E.class, null),
                null, null, null, null);
    }

    @Override //fragment starts here, why??
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {


        if (loadedList.size() > 0) {
         //crashes here …...

        if (!fullPacketLoaded) {
        }
    }

    @Override
    public void onLoaderReset(Loader<Cursor> loader) {

    }


TabFragmentLayout:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content">


    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        app:tabGravity="center"
        app:tabMode="fixed"
        android:layout_width="match_parent"
        android:layout_height="33dp"
        android:fillViewport="false">
    </android.support.design.widget.TabLayout>


    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>




</LinearLayout>



Errors I got:
> java.lang.NullPointerException: Attempt to invoke interface method
> 'boolean java.util.List.isEmpty()' on a null object reference    at
> com.xxx.xx.fragment.TabFocusFragment.onLoadFinished(TabFocusFragment.java:)
com.xxx.xx.fragment.TabFocusFragment.onLoadFinished(TabFocusFragment.java:)

android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:427)
> android.support.v4.app.LoaderManagerImpl.initLoader(LoaderManager.java:562)
> android.support.v4.app.Fragment.performCreate(Fragment.java:1766)
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:846)
> android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:860)
android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
> android.support.v4.view.ViewPager.populate(ViewPager.java:1103) 11-17
> android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)> android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
> android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:494)> android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:1584)
> android.support.design.widget.TabLayout.selectTab(TabLayout.java:807)
> android.support.design.widget.TabLayout.selectTab(TabLayout.java:779)
> android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1039)
> android.support.design.widget.TabLayout$1.onClick(TabLayout.java:620)
> android.view.View.performClick(View.java:4785) 11-17 10:35:42.619
> android.view.View$PerformClick.run(View.java:19858) 11-17 10:35:42.619
> android.os.Handler.handleCallback(Handler.java:739) 11-17 10:35:42.619
> android.os.Handler.dispatchMessage(Handler.java:95) 11-17 10:35:42.619
> android.os.Looper.loop(Looper.java:155) 11-17 10:35:42.619
> android.app.ActivityThread.main(ActivityThread.java:5696) 11-17
> java.lang.reflect.Method.invoke(Native Method) 11-17 10:35:42.619
> java.lang.reflect.Method.invoke(Method.java:372) 11-17 10:35:42.619> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
My TabFragment:
公共类TabFragment扩展了片段{
公共静态表格布局;
公共静态ViewPager ViewPager;
公共静态整数项=3;
私有上下文;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
/**
*充气选项卡_布局和设置视图。
*/
视图选项卡视图=充气机。充气(R.layout.fragment_选项卡,空);
tabLayout=(tabLayout)tabView.findviewbyd(R.id.tabs);
viewPager=(viewPager)选项卡view.findViewById(R.id.viewPager);
/**
*为查看寻呼机设置一个寻呼机
*/
setAdapter(新的MyAdapter(getChildFragmentManager());
/**
*现在,这是一个解决办法,
*如果没有runnable,则带有ViewPager的设置无法工作。
*可能是一个支持库错误。
*/
tabLayout.post(新的Runnable(){
@凌驾
公开募捐{
tabLayout.setupWithViewPager(viewPager);
for(int i=0;i0){
//在这里撞车…。。。
如果(!fullPacketLoaded){
}
}
@凌驾
公共void onLoaderReset(加载器){
}
选项卡碎片布局:
我得到的错误:
>java.lang.NullPointerException:尝试调用接口方法
>位于的空对象引用上的“boolean java.util.List.isEmpty()”
>com.xxx.xx.fragment.TabFocusFragment.onLoadFinished(TabFocusFragment.java:)
com.xxx.xx.fragment.TabFocusFragment.onLoadFinished(TabFocusFragment.java:)
android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:427)
>android.support.v4.app.LoaderManager.initLoader(LoaderManager.java:562)
>android.support.v4.app.Fragment.performCreate(Fragment.java:1766)
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:846)
>android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:860)
FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
>android.support.v4.view.ViewPager.populate(ViewPager.java:1103)11-17
>android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)>android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
>android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:494)>android.support.design.widget.TabLayout$viewPagerOnAbsElectedListener.onTabSelected(TabLayout.java:1584)
>android.support.design.widget.TabLayout.selectTab(TabLayout.java:807)
>android.support.design.widget.TabLayout.selectTab(TabLayout.java:779)
>安德烈
viewpager.setOffscreenPageLimit(2),