Java 抽屉导航栏中的开关
我将开关放在抽屉导航栏的菜单项中,如下所示: 但当我尝试使用此代码访问activity Oncreate中的Switch时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)
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();
}
});
如果您将代码添加为图片,其他人很难帮助您调试,因为我们无法复制粘贴它。我不知道为什么当我将代码粘贴到此处或粘贴到代码部分时,它没有显示我的所有代码,只是显示了部分代码。为什么我将代码图像放在此处如果您将代码添加为图片,其他人很难帮助您调试,因为我们不能复制粘贴它。我不知道为什么当我把代码粘贴在这里或粘贴在代码部分时,它没有显示我所有的代码,只是显示了部分代码,这就是为什么我把代码的图像放在这里