Android 关闭和打开抽屉后,NavigationView中图标的选中状态错误

Android 关闭和打开抽屉后,NavigationView中图标的选中状态错误,android,androiddesignsupport,navigationview,Android,Androiddesignsupport,Navigationview,我尝试从Android支持设计库中实现新的NavigationView。该应用程序包含一个抽屉布局,其中包含一个包含NavigationView的片段。带有图标的简单菜单 我启动应用时未检查任何项目 然后我单击一个项目,该项目被选中,文本和图标都显示选中状态: 然后我用刷子打开和关闭抽屉。现在发生的是,我所选项目的文本显示选定状态,但图标不显示。另一方面,上面的项目具有显示选中状态的图标 这是一个错误还是我做错了什么 我的项目和应用程序截图可在此处查看: 解决方案是将导航视图直接放在抽屉布局中,

我尝试从Android支持设计库中实现新的NavigationView。该应用程序包含一个抽屉布局,其中包含一个包含NavigationView的片段。带有图标的简单菜单

  • 我启动应用时未检查任何项目

  • 然后我单击一个项目,该项目被选中,文本和图标都显示选中状态:

  • 然后我用刷子打开和关闭抽屉。现在发生的是,我所选项目的文本显示选定状态,但图标不显示。另一方面,上面的项目具有显示选中状态的图标

  • 这是一个错误还是我做错了什么

    我的项目和应用程序截图可在此处查看:


    解决方案是将导航视图直接放在抽屉布局中,而不是放在片段中。

    像您一样面对同样的问题…(我已经从片段中删除了导航视图)。 这个解决方案对我有效。 您可以尝试不从片段中删除导航视图

    尝试以下结构:

    public your class
    {
    private int mNavItemId;
    private static final String NAV_ITEM_ID = "navItemId";
    onCreate()
    {
          if (null == savedInstanceState) {
                mNavItemId = R.id.home;
            } else {
                mNavItemId = savedInstanceState.getInt(NAV_ITEM_ID);
            }
    
            //call setupnavigationview
            setupnavigationview();
    }
    
    private void setupNavigationView() {
    
            mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
            mNavigationView.getMenu().findItem(mNavItemId).setChecked(true);
            mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    // update highlighted item in the navigation menu
                    menuItem.setChecked(true);
                    mNavItemId = menuItem.getItemId();
                    mDrawerLayout.closeDrawer(GravityCompat.START);
    
                        switch (menuItem.getItemId()) {
                        case R.id.id_of_your_menu_item:
                            call your fragment
                            break;
    
                    });
    
                    }
    
                    @Override
        protected void onSaveInstanceState(final Bundle outState) {
            super.onSaveInstanceState(outState);
            outState.putInt(NAV_ITEM_ID, mNavItemId);
        }
        @Override
        public boolean onOptionsItemSelected(final MenuItem item) {
            if (item.getItemId() == android.support.v7.appcompat.R.id.home) {
                return mDrawerToggle.onOptionsItemSelected(item);
            }
            return super.onOptionsItemSelected(item);
        }
    }           
    

    这不是一个真正的问题。假设你在问,“世界上有完美的人吗?”当然,你会回答没有。我同意,我已经更新了标题。我尝试将导航视图放在相对布局中,该布局在抽屉布局下,但仍然面临相同的问题。。。