如何设置带条件的导航视图?
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();
试试看是否可行。
我在 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();
试试看是否可行。