如何设置带条件的导航视图?

How to set up navigation view with condition?

我在 android 的两侧都有两个导航视图。如下图link所示,左侧为家长注册用户,右侧为补习提供者注册用户。比如用户A注册为家长,那么he/she只能打开左侧导航。我应该编写什么代码来确保 he/she 是每个导航视图的用户。有人可以帮助或教我吗?

我的界面示例

我正在尝试这种编码:-

userCategory = (RadioGroup) findViewById(R.id.user_radio_group_btn);
    Integer checkedID = userCategory.getCheckedRadioButtonId();
    radioButton = (RadioButton) findViewById(checkedID);
    String selection = radioButton.getText().toString();

    if (selection.equals("Parents"))
    {
        menuRight.setVisibility(View.GONE);
        tuitionProvider.setVisibility(View.GONE);
    }

    if (selection.equals("Tuition Provider"))
    {
        menuLeft.setVisibility(View.GONE);
        parents.setVisibility(View.GONE);
    }

    else
    {
        Intent RegistrationIntent = new Intent(home.this, RegistrationActivity.class);
        startActivity(RegistrationIntent);
        Toast.makeText(this, "Please register first.", Toast.LENGTH_SHORT).show();
    }

XML 编码:-

 <RadioGroup
    android:id="@+id/user_radio_group_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/parents_radio_button"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginStart="50dp"
        android:layout_marginTop="175dp"
        android:background="@drawable/roundedbutton"
        android:text="Parents" />

    <RadioButton
        android:id="@+id/tuition_provider_radio_button"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginStart="35dp"
        android:layout_marginTop="175dp"
        android:background="@drawable/roundedbutton"
        android:text="Tuition Provider" />
</RadioGroup>

我遇到了错误

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚方法 'boolean java.lang.Object.equals(java.lang.Object)' 在 com.addaj.mobilerecommendationsystem.home.onCreate(home.java:59)

检查谁登录了,让你的一个 NavigationDrawer 对用户不可见,第二个可见。 例如,您检查 userCategory,如果它是父级,则让教师的导航抽屉不可见

final RadioGroup userCategory = (RadioGroup) findViewById(R.id.user_radio_group_btn);
    userCategory.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            Integer checkedID = userCategory.getCheckedRadioButtonId();
            View radioButton = userCategory.findViewById(checkedID);
            int radioId =  userCategory.indexOfChild(radioButton);
            RadioButton btn = (RadioButton) userCategory.getChildAt(radioId);
            String selection = (String) btn.getText();
            if(selection.equals("Parents")){
               menuRight.setVisibility(View.GONE);
               tuitionProvider.setVisibility(View.GONE);
                }else{
                    menuLeft.setVisibility(View.GONE);
                    parents.setVisibility(View.GONE);
                }
            }
        }
    });

我已经测试了您的代码,您需要使用 android:checked="true" 设置检查 XML 中的 RadioButton 之一.

您需要设置至少一个 RadioButton 勾选

android:checked="true"

.

喜欢:

<RadioGroup
        android:id="@+id/user_radio_group_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton
            android:id="@+id/parents_radio_button"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:checked="true"
            android:text="Parents" />

        <RadioButton
            android:id="@+id/tuition_provider_radio_button"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:text="Tuition Provider" />
    </RadioGroup>

解法:

而不是:

Integer checkedID = userCategory.getCheckedRadioButtonId();

这里,userCategory是一个RadioButton。使用这个:

Integer checkedID = (enter here your RadioGroupId).getCheckedRadioButtonId();

试试看是否可行。