Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 底部导航视图getChildAt()错误_Android_Bottomnavigationview - Fatal编程技术网

Android 底部导航视图getChildAt()错误

Android 底部导航视图getChildAt()错误,android,bottomnavigationview,Android,Bottomnavigationview,我在项目中同时使用了navigationview和bottomnavigationview,但getChildAt()有一个错误 这是我的主要活动 setContentView(R.layout.activity_main2); BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavView_Bar); BottomNavigat

我在项目中同时使用了navigationview和bottomnavigationview,但getChildAt()有一个错误

这是我的主要活动

    setContentView(R.layout.activity_main2);
        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavView_Bar);

    BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
    Menu menu = bottomNavigationView.getMenu();
    MenuItem menuItem = menu.getItem(0);
    menuItem.setChecked(true);

    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){

                case R.id.ic_android:
                    Intent intent0 = new Intent(Main2Activity.this, Kategori.class);
                    startActivity(intent0);
                    break;

                case R.id.ic_books:
                    Intent intent2 = new Intent(Main2Activity.this, Kategori.class);
                    startActivity(intent2);
                    break;
            }
            return false;
        }
    });
由于navigationview,我使用activity_main2作为布局。实际上,底部导航是主要内容

这是logcat:

 java.lang.RuntimeException: Unable to start activity 
ComponentInfo{info.androidhive.firebasenotifications/info.androidhive.firebasenotifications.Main2Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.widget.BottomNavigationView.getChildAt(int)' on a null object reference
                                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
...
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.widget.BottomNavigationView.getChildAt(int)' on a null object reference
                                                                                          at info.androidhive.firebasenotifications.BottomNavigationViewHelper.disableShiftMode(BottomNavigationViewHelper.java:13)
                                                                                          at info.androidhive.firebasenotifications.Main2Activity.onCreate(Main2Activity.java:108)
这是bottomnavigationviewhelper

 public static void disableShiftMode(BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    try {
        Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
        shiftingMode.setAccessible(true);
        shiftingMode.setBoolean(menuView, false);
        shiftingMode.setAccessible(false);
        for (int i = 0; i < menuView.getChildCount(); i++) {
            BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
            //noinspection RestrictedApi
            item.setShiftingMode(false);
            // set once again checked value, so view will be updated
            //noinspection RestrictedApi
            item.setChecked(item.getItemData().isChecked());
        }
    } catch (NoSuchFieldException e) {
        Log.e("BNVHelper", "Unable to get shift mode field", e);
    } catch (IllegalAccessException e) {
        Log.e("BNVHelper", "Unable to change value of shift mode", e);
    }
publicstaticvoid disableShiftMode(BottomNavigationView){
BottomNavigationMenuView menuView=(BottomNavigationMenuView)视图;
试一试{
Field shiftingMode=menuView.getClass().getDeclaredField(“MSShiftingMode”);
换档模式。设置可访问(真);
shiftingMode.setBoolean(菜单视图,false);
换档模式。设置可访问(错误);
对于(int i=0;i
确保在
活动\u main2
中有一个id为
bottomNavView\u Bar的视图。bottomNavView\u Bar位于
content\u main
中是因为导航视图。在导航视图中,
活动\u main2
仅包括导航视图和调用
content\u main