Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Java 在导航抽屉中跨多个组实现多选择访问_Java_Android_Navigation Drawer_Androiddesignsupport - Fatal编程技术网

Java 在导航抽屉中跨多个组实现多选择访问

Java 在导航抽屉中跨多个组实现多选择访问,java,android,navigation-drawer,androiddesignsupport,Java,Android,Navigation Drawer,Androiddesignsupport,我想在我的导航抽屉中有这种选择。此图显示最初进行的选择(默认情况下不是由用户进行) 我已经通过以下代码实现了这一点 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Category"> <menu> <group a

我想在我的
导航抽屉中有这种选择。此图显示最初进行的选择(默认情况下不是由用户进行)

我已经通过以下代码实现了这一点

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Category">
    <menu>
        <group android:checkableBehavior="single">
            <item
                android:id="@+id/coaching"
                android:icon="@drawable/coaching"
                android:title="Coaching"
                android:checked="true"/>
            <item
                android:id="@+id/training"
                android:icon="@drawable/training"
                android:title="Training"/>
        </group>
    </menu>
</item>

<group android:checkableBehavior="single">
    <item
        android:id="@+id/new_registrations"
        android:icon="@drawable/new_registrations"
        android:title="New Registrations"
        android:checked="true"/>
    <item
        android:id="@+id/ready_certificates"
        android:icon="@drawable/ready_certificates"
        android:title="Certificates Ready To Collect"/>
    <item
        android:id="@+id/allotted_certificates"
        android:icon="@drawable/allotted_certificates"
        android:title="Certificates Allotted So Far"/>
</group>

但问题是,当我手动选择任何项目时,之前从两个组中选择的所有项目都会被取消选择。所以我想验证第一组的一个选择和第二组的一个选择。正在查找缺少的属性。

  • 从两个组中删除android:checkableBehavior=“single”
  • 从“辅导”和“新注册”项目中删除android:checked=“true”
  • 分别为每个项目设置
    android:checkable=“true”
  • 为两个组设置唯一的id(
    “@+id/第一组”
    “@+id/第二组”
  • 您的activity_main_drawer.xml应如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:title="Category">
            <menu>
                <group android:id="@+id/first_group" >
                    <item
                        android:id="@+id/coaching"
                        android:icon="@drawable/coaching"
                        android:title="Coaching"
                        android:checkable="true" />
                    <item
                        android:id="@+id/training"
                        android:icon="@drawable/training"
                        android:title="Training"
                        android:checkable="true" />
                </group>
            </menu>
        </item>
        <group android:id="@+id/second_group" >
            <item
                android:id="@+id/new_registrations"
                android:icon="@drawable/new_registrations"
                android:title="New Registrations"
                android:checkable="true" />
            <item
                android:id="@+id/ready_certificates"
                android:icon="@drawable/ready_certificates"
                android:title="Certificates Ready To Collect"
                android:checkable="true" />
            <item
                android:id="@+id/allotted_certificates"
                android:icon="@drawable/allotted_certificates"
                android:title="Certificates Allotted So Far"
                android:checkable="true" />
        </group>
    </menu>
    
    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {
    
        MenuItem prevItemOfFirstGroup;
        MenuItem prevItemOfSecondGroup;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // ... some code
    
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
    
            prevItemOfFirstGroup=navigationView.getMenu().findItem(R.id.coaching);
            prevItemOfFirstGroup.setChecked(true);
            prevItemOfSecondGroup=navigationView.getMenu().findItem(R.id.new_registrations);
            prevItemOfSecondGroup.setChecked(true);
        }
    
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            int groupId = item.getGroupId();
            if (groupId == R.id.first_group) {
                if (prevItemOfFirstGroup != null) {
                    prevItemOfFirstGroup.setChecked(false);
                }
                prevItemOfFirstGroup = item;
            } else if (groupId == R.id.second_group) {
                if (prevItemOfSecondGroup != null) {
                    prevItemOfSecondGroup.setChecked(false);
                }
                prevItemOfSecondGroup = item;
            }
            item.setChecked(true);
    
            // Handle navigation view item clicks here.
            int id = item.getItemId();
            // ... some code
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return false; // IMPORTANT! NOT TRUE!
        }
    }