Java 抽屉导航栏中的开关

Java 抽屉导航栏中的开关,java,android,navigation-drawer,Java,Android,Navigation Drawer,我将开关放在抽屉导航栏的菜单项中,如下所示: 但当我尝试使用此代码访问activity Oncreate中的Switch时 NavigationView navigationView = findViewById(R.id.nav_view); try { ((Switch) navigationView.getMenu().findItem(R.id.nav_isactive).getActionView()).setChecked(true)

我将开关放在抽屉导航栏的菜单项中,如下所示:

但当我尝试使用此代码访问activity Oncreate中的Switch时

        NavigationView  navigationView = findViewById(R.id.nav_view);

    try {

        ((Switch) navigationView.getMenu().findItem(R.id.nav_isactive).getActionView()).setChecked(true);
    }
    catch (Exception ex)
    {
        Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();
    }
我得到了演员错误:

java.lang.ClassCastException: androidx.appcompat.view.menu.MenuItemImpl cannot be cast to android.widget.Switch

在ex.getMessage()中告诉我:不能不将linearLayout转换为Switch

最后我找到了答案,我把它放在这里给别人看

    NavigationView  navigationView = findViewById(R.id.nav_view);


MenuItem menuItem = navigationView.getMenu().findItem(R.id.nav_isactive); // This is the menu item that contains your switch
Switch drawer_switch = (Switch) menuItem.getActionView().findViewById(R.id.m_swisactive);
drawer_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // Your logic goes here
        Toast.makeText(MainActivity.this, String.valueOf(isChecked), Toast.LENGTH_SHORT).show();
    }
});

最后我找到了答案,我把它放在这里给别人看

    NavigationView  navigationView = findViewById(R.id.nav_view);


MenuItem menuItem = navigationView.getMenu().findItem(R.id.nav_isactive); // This is the menu item that contains your switch
Switch drawer_switch = (Switch) menuItem.getActionView().findViewById(R.id.m_swisactive);
drawer_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // Your logic goes here
        Toast.makeText(MainActivity.this, String.valueOf(isChecked), Toast.LENGTH_SHORT).show();
    }
});

如果您将代码添加为图片,其他人很难帮助您调试,因为我们无法复制粘贴它。我不知道为什么当我将代码粘贴到此处或粘贴到代码部分时,它没有显示我的所有代码,只是显示了部分代码。为什么我将代码图像放在此处如果您将代码添加为图片,其他人很难帮助您调试,因为我们不能复制粘贴它。我不知道为什么当我把代码粘贴在这里或粘贴在代码部分时,它没有显示我所有的代码,只是显示了部分代码,这就是为什么我把代码的图像放在这里