Java 如何创建导航视图打开条件?

Java 如何创建导航视图打开条件?,java,android,Java,Android,首先,我在android中有两个两边的导航视图,如图所示。左侧为注册为家长的用户,右侧为注册为学费提供者的用户。例如,如果用户A注册为家长,则他/她只能打开左侧导航。我做了一些研究,主要是使用单选按钮/单选组。不幸的是,我必须使用微调器,我应该编写什么代码来确保导航视图可以为某些用户打开。供你参考,我有3项活动 1.Java编码,我有编码初始化,构造函数和getter 2 RegistrationActivity.Java,我将所有微调器编码放在这里 //USER TYPE SPINNER

首先,我在android中有两个两边的导航视图,如图所示。左侧为注册为家长的用户,右侧为注册为学费提供者的用户。例如,如果用户A注册为家长,则他/她只能打开左侧导航。我做了一些研究,主要是使用单选按钮/单选组。不幸的是,我必须使用微调器,我应该编写什么代码来确保导航视图可以为某些用户打开。供你参考,我有3项活动

1.Java编码,我有编码初始化,构造函数和getter

2 RegistrationActivity.Java,我将所有微调器编码放在这里

//USER TYPE SPINNER
    List<String> categories = new ArrayList<>();
    categories.add(0, "Choose Category");
    categories.add("Parents");
    categories.add("Tuition Provider");

    ArrayAdapter<String> dataAdapter;
    dataAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, categories);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    RegisterUserType.setAdapter(dataAdapter);

    RegisterUserType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {
            if(position==0)
            {
                //Toast.makeText(getApplicationContext(),"No Item Selected",Toast.LENGTH_LONG).show();
            }

            else
            {
                Toast.makeText(getApplicationContext(),parent.getItemAtPosition(position) +" Selected",Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

我无法将所有代码粘贴到此处,因为它太长了,但我可以通过电子邮件向您发送电子邮件,以便更好地了解我的XML布局。

您所要做的就是锁定要禁用的抽屉,如果要启用它,请再次解锁

使用DroperLayout.SetDroperLockMode

在您的情况下,下面的代码将关闭您的一个具有重力启动的抽屉

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START);
当你想再次解锁时,只需

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);
还记得一件事吗

drawerLayout.setDrawerLockMode允许应用程序限制用户打开或关闭给定抽屉的能力。该抽屉无法通过滑动打开,但drawerLayout仍将响应对openDrawer、closeDrawer的调用

因此,在你的情况下,你也会考虑禁用IVIEVIEW点击,因为他们有这些方法

就你而言

当用户单击微调器项时,您将选中ifposition==1 如果这个条件为真,你就知道它是父母

所以在您的Home.Java中执行此操作

这样做

    if(parent==true){

//this will disable right drawer

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

//and this will enable left drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);

//and also do to disable right ImageView
menuRight.setEnabled(false); 

//and also do to enable left ImageView
menuLeft.setEnabled(true);}
现在,对于学费提供程序,请执行相同的操作,但这次启用右侧,禁用左侧,
菜单按钮也是一样。

如何解锁和锁定它?我想要的是,如果用户是家长,则只能打开左侧导航视图。因此,如果用户是家长,则只需锁定右侧导航,以便他们只能打开左侧等一下,我将重写您的代码并更新我的答案,以便您能更好地理解。这只是一个提示。。。您可以声明变量并单击存储位置是否为父项。。。它就像一个布尔值。。。True和False我应该在哪里声明变量?在同一个活动中?
    if(parent==true){

//this will disable right drawer

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

//and this will enable left drawer
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);

//and also do to disable right ImageView
menuRight.setEnabled(false); 

//and also do to enable left ImageView
menuLeft.setEnabled(true);}