Another Option
How to change my menu visibility in layout based on the Using SessionManager condition
Menu.xml Code
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:icon="@drawable/ic_search"
android:iconTint="@color/white"
android:title="@string/action_search"
app:showAsAction="always" />
<item
android:id="@+id/action_reg"
android:orderInCategory="100"
android:icon="@drawable/ic_reg"
android:iconTint="@color/white"
android:title="@string/action_search"
app:showAsAction="always" />
</menu>
Activity.java Code
public class MainActivity extends AppCompatActivity {
SessionManager sessionManager;
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
MenuItem action,reg,home,gallery,slideshow,userprofile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
DrawerLayout drawer = binding.drawerLayout;
NavigationView navigationView = binding.navView;
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
.setOpenableLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
sessionManager = new SessionManager(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
action = menu.findItem(R.id.action_settings);
reg = menu.findItem(R.id.action_reg);
if (sessionManager.isLoggedIn()) {
action.setVisible(true);
reg.setVisible(true);
} else {
action.setVisible(false);
reg.setVisible(false);
}
return true;
}