Android 为什么我会从安卓7牛轧糖中得到一个NullPointerException?

Android 为什么我会从安卓7牛轧糖中得到一个NullPointerException?,android,fragment-tab-host,android-7.0-nougat,Android,Fragment Tab Host,Android 7.0 Nougat,碎片 public class PropertyHomeTabListScreen extends Fragment { private String TAG = "PropertyHomeTabListScreen"; TabsPagerAdapter tabsAdapter; ViewPager viewPager; TabHost tabHost; private int totalCount = 0; private int curre

碎片

public class PropertyHomeTabListScreen extends Fragment {


    private String TAG = "PropertyHomeTabListScreen";
    TabsPagerAdapter tabsAdapter;
    ViewPager viewPager;
    TabHost tabHost;
    private int totalCount = 0;
    private int currentTabid = 0;
    private String name = null;
    private String[] tabName = {"enquiries","properties","seller profile","more"};
    private DataHandler dataHandler;
    private String homeScreenStatus = null;
    SharedPreferences sharedPreferences;
    private int customerId = 0;
    AllCustomersObject allCustomersObject;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.homescreen_tablist,null);
        sharedPreferences = getActivity().getSharedPreferences("CUSTOMER", MODE_PRIVATE);
        customerId = sharedPreferences.getInt("user_id", 0);
        GetProfile getProfile = new GetProfile(getActivity(), customerId);
        getProfile.execute();
        SharedPreferences userprofile =getActivity().getSharedPreferences("USER_PROFILE",getActivity().MODE_PRIVATE);
        allCustomersObject = new AllCustomersObject();
        allCustomersObject.setname(userprofile.getString("username",null));
        allCustomersObject.setImageUrl(userprofile.getString("image_path",null));
        allCustomersObject.setPhonenumber(userprofile.getString("user_phone",null));



        dataHandler = DataHandler.getDataHandler();
        tabHost = (TabHost) rootView.findViewById(android.R.id.tabhost);
        tabHost.setup();
        viewPager=(ViewPager) rootView.findViewById(R.id.viewpager);

        initialiseTabHost();
        tabsAdapter=new TabsPagerAdapter(getActivity(),getFragmentManager(),totalCount);
        viewPager.setAdapter(tabsAdapter);

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                View tabView = tabHost.getTabWidget().getChildAt(position);
                View mHorizontalScroll = (HorizontalScrollView) rootView.findViewById(R.id.horizontallistview);
                try {
                    if (tabView != null) {
                        int width = mHorizontalScroll.getWidth();
                        int scrollPos = tabView.getLeft() - (width - tabView.getWidth()) / 2;
                        mHorizontalScroll.scrollTo(scrollPos,0);
                    } else {
                        mHorizontalScroll.scrollBy(positionOffsetPixels, 0);
                    }
                    try {
                        homeScreenStatus = dataHandler.getHomeScreenStatus();
                        if (homeScreenStatus != null && !homeScreenStatus.isEmpty()) {
                            if (homeScreenStatus.equalsIgnoreCase("homescreen")) {
                                currentTabid = dataHandler.getCurrentHomeScreenTab();
                                tabHost.getTabWidget().setCurrentTab(currentTabid);
                                viewPager.setCurrentItem(currentTabid);
                                dataHandler.setHomeScreenStatus("nothomescreen");
                            } else {
                                int pos = viewPager.getCurrentItem();
                                dataHandler.setHomeScreenStatus("nothomescreen");
                                dataHandler.setCurrentHomeScreenTab(pos);
                                viewPager.setCurrentItem(pos);
                                tabHost.setCurrentTab(pos);
                            }
                        } else {
                            int pos = viewPager.getCurrentItem();
                            dataHandler.setHomeScreenStatus("nothomescreen");
                            dataHandler.setCurrentHomeScreenTab(pos);
                            viewPager.setCurrentItem(pos);
                            tabHost.setCurrentTab(pos);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            @Override
            public void onPageSelected(int position) {
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        return rootView;

    }


    /**
     * Below function is used for Add the tab
     * @param activity
     * @param tabHost
     * @param tabSpec
     */
    private static void AddTab(Activity activity, TabHost tabHost, TabHost.TabSpec tabSpec) {
        tabSpec.setContent(new MyTabFactory(activity));
        tabHost.addTab(tabSpec);
    }

    /**
     * Below function is used for initialize the tabhost and set the which tab is Active or not.
     */
    private void initialiseTabHost() {
        int tabCount = 4;
        for(int i= 0;i < tabCount;i++) {
            name = tabName[i];
            AddTab(getActivity(),this.tabHost,this.tabHost.newTabSpec(name).setIndicator(name));
        }

        try {
            homeScreenStatus = dataHandler.getHomeScreenStatus();

            if (homeScreenStatus != null && !homeScreenStatus.isEmpty()) {
                if (homeScreenStatus.equalsIgnoreCase("homescreen")) {
                    currentTabid = dataHandler.getCurrentHomeScreenTab();
                    tabHost.getTabWidget().setCurrentTab(currentTabid);
                    viewPager.setCurrentItem(currentTabid);
                } else {
                    dataHandler.setHomeScreenStatus("nothomescreen");
                    tabHost.getTabWidget().setCurrentTab(0);
                    viewPager.setCurrentItem(0);
                }
            } else {
                dataHandler.setHomeScreenStatus("nothomescreen");
                tabHost.getTabWidget().setCurrentTab(0);
                viewPager.setCurrentItem(0);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
            @Override
            public void onTabChanged(String s) {
                int pos = tabHost.getCurrentTab();
                dataHandler.setHomeScreenStatus("nothomescreen");
                dataHandler.setCurrentHomeScreenTab(pos);
                viewPager.setCurrentItem(pos);
                tabHost.getTabWidget().setCurrentTab(pos);
           }
        });

        totalCount = tabHost.getTabWidget().getTabCount();

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

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

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

}

我也有同样的问题。但是当我从我的布局中删除android:tabStripEnabled=“true”时,问题就消失了。

请编辑您的问题并发布与崩溃相关的整个Java堆栈跟踪。您使用的是什么设备?我正在用moto g4进行测试+
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="10"
        android:background="@color/screen_background">

        <TabHost
            android:id="@android:id/tabhost"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="10">

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <HorizontalScrollView
                    android:id="@+id/horizontallistview"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:fillViewport="true"
                    android:background="@color/greycolor"
                    android:scrollbars="none" >

                    <TabWidget
                        android:id="@android:id/tabs"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:tabStripEnabled="true"
                        android:background="@color/overallcolor"
                        android:orientation="horizontal"/>

                </HorizontalScrollView>

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_weight="0" />

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

            </LinearLayout>

        </TabHost>

    </LinearLayout>

</android.support.v4.widget.DrawerLayout>
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.drawable.Drawable.setState(int[])' on a null object reference
                                                                                       at android.widget.TabWidget.dispatchDraw(TabWidget.java:378)
                                                                                       at android.view.View.draw(View.java:17086)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16065)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.draw(View.java:17086)
                                                                                       at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:1643)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16065)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.draw(View.java:17086)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16065)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1379)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16060)
                                                                                       at android.view.View.draw(View.java:16849)
                                                                                       at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                                       at android.view.View.draw(View.java:17086)
                                                                                       at com.android.internal.policy.DecorView.draw(DecorView.java:751)
                                                                                       at android.view.View.updateDisplayListIfDirty(View.java:16065)