根据onCreateOptionsMenu中的共享首选项值更改菜单项的可见性

时间:2018-08-23 07:26:43

标签: android sharedpreferences navigation-drawer

我需要根据登录角色获取从导航抽屉中删除一些值。我尝试了两种方法。一种是基于角色值的更改菜单,第二种是基于角色值的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;
}

这两种方法都不起作用,因为共享首选项值未获得

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试在NavigationView中增加抽屉菜单。要对其进行充气,请使用下面的代码RecyclerView

onCreate()