我需要根据登录角色获取从导航抽屉中删除一些值。我尝试了两种方法。一种是基于角色值的更改菜单,第二种是基于角色值的setVisibilty。但是问题是我无法在onCreateOptionsMenu内获取共享的首选项值。当在onCreate中给出值时,该值会变好。不知道为什么会这样。我完全陷入了这个问题。
方法1
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SharedPreferences prefs1 = getSharedPreferences("eduplus", Context.MODE_PRIVATE);
String role = prefs1.getString("roleId", null);
Toast.makeText(getApplicationContext(),role,Toast.LENGTH_LONG).show();
assert role != null;
if(role.equals("parent"))
{
getMenuInflater().inflate(R.menu.drawer, menu);
}
else
{
getMenuInflater().inflate(R.menu.drawer1,menu);
}
return true;
}
方法2
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
SharedPreferences prefs1 = getSharedPreferences("eduplus", Context.MODE_PRIVATE);
String role = prefs1.getString("roleId", null);
Log.d("rolevalueval",role);
if (role.equals("student")) {
menu.findItem(R.id.leaverequest).setVisible(false);
}
return true;
}
这两种方法都不起作用,因为共享首选项值未获得
答案 0 :(得分:0)
我认为您正在尝试在NavigationView中增加抽屉菜单。要对其进行充气,请使用下面的代码RecyclerView
。
onCreate()