Android 导航抽屉片段一直返回null

Android 导航抽屉片段一直返回null,android,xml,android-fragments,android-resources,navigation-drawer,Android,Xml,Android Fragments,Android Resources,Navigation Drawer,我在配置我的应用程序以使其在启动时不会崩溃方面遇到问题。我创建了一些活动并制作了一个导航抽屉片段,我将其布局存储在一个单独的.xml文件中,并将其包含在每个活动的布局中 这是可行的,直到我为一个活动使用了另一个.xml文件,而不是启动器活动。gradle版本中存在一个bug,因此加载到手机上的应用程序是以前的版本(出于某种原因,我所做的更改没有包含在版本中)。这种情况经常发生在我身上(在Android Studio中),我的工作就是从手机上卸载应用程序,然后在Android Studio中运行重

我在配置我的应用程序以使其在启动时不会崩溃方面遇到问题。我创建了一些活动并制作了一个导航抽屉片段,我将其布局存储在一个单独的.xml文件中,并将其包含在每个活动的布局中

这是可行的,直到我为一个活动使用了另一个.xml文件,而不是启动器活动。gradle版本中存在一个bug,因此加载到手机上的应用程序是以前的版本(出于某种原因,我所做的更改没有包含在版本中)。这种情况经常发生在我身上(在Android Studio中),我的工作就是从手机上卸载应用程序,然后在Android Studio中运行重新安装。然而,在这样做之后,我得到了一些奇怪的结果。现在我甚至无法启动我的android应用程序

当代码试图

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference
当用户第一次打开应用程序时,它会尝试打开抽屉,而崩溃的那一行似乎是正在变为空的containerView:

public void setUp(int fragmentID, final DrawerLayout drawerLayout, Toolbar toolbar){
     mDrawerLayout = drawerLayout;
    containerView = getActivity().findViewById(fragmentID);    

    if(!mUserLearnedDrawer && !mFromSavedInstanceState){
        mDrawerLayout.openDrawer(containerView);
    }

}
此设置函数在my MainActivity(OnCreate方法)中调用:

现在,我在布局文件中包含了导航抽屉,如下所示

<include
    android:id="@+id/nav_drawer_frag"
    layout="@layout/navigation_drawer_declaration"/>
线

在“containerView=getActivity().findViewById(fragmentID);”下面添加该代码,该代码将定义抽屉布局的行为

mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar,
            R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if (!mUserLearnedDrawer) {
                mUserLearnedDrawer = true;
                saveToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer + "");
            }
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });

我的导航抽屉片段类中已经有了这些代码。我只是没有把它放在我的开场白里,因为我不想让帖子超载。干杯,然后您需要重新检查您所使用的视图是否已定义(使用findviewbyd),您可能没有定义。如果无法解决问题,请告诉我。是否有明确的方法检查此问题?我使用Android Studio的autocomplete来完成R.id.***,直接从片段复制并粘贴id,并记录片段布局的值。containerView仍然返回为空。:)没有(至少据我所知)。
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout_declared"
    android:name="helloworld.vault101payroll.NavigationDrawerFragment"
    android:layout_width="@dimen/nav_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:layout="@layout/fragment_navigation_drawer"
    tools:layout="@layout/fragment_navigation_drawer"/>
containerView = getActivity().findViewById(fragmentID)
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_closed){

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if(!mUserLearnedDrawer){
                mUserLearnedDrawer = true;
                saveToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer + "");
            }
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };
    if(!mUserLearnedDrawer && !mFromSavedInstanceState){
        mDrawerLayout.openDrawer(containerView);
    }
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar,
            R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if (!mUserLearnedDrawer) {
                mUserLearnedDrawer = true;
                saveToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer + "");
            }
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });