Скрыть Menu в Fragment android java
Задача : в определенном Fragment показывать меню (добавить кнопку в ActionBar), в остальных скрывать.
Попытка реализации :
В главном активити:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.clisents_request_item, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.request:
return false;
}
return (super.onOptionsItemSelected(item));
}
В Fragment, где нужно показать :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
final MenuItem menuItem = menu.findItem(R.id.request);
//to-do
}
В Fragment, где нужно скрыть:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
}
но Menu все равно отображается во всех Fragment, как скрыть Menu в определенных Fragments ?
Ответы (1 шт):
Можно убирать меню из родительской активности при переходе на определенный фрагмент. В месте где происходит выбор (при нажатии на кнопку, выбор пункта BottomNavigationView) скрываете тулбар:
getSupportActionBar().hide();(kotlin - supportActionBar!!.hide())
или показываете там где вам нужно:
getSupportActionBar().show();(kotlin - supportActionBar!!.show())
вызов приведенных функций нужно делать из активности. Дальше в фрагменте где у вас показан тулбар вы добавляете меню способом который указан в вашем вопросе. Но так же я бы советовал добавить проверку наличия тулбара, чтобы не засетить меню на пустое место.