Я создаю приложение для Android, и я стараюсь как можно больше уважать последние стандарты юзабилити Android. В частности, я готовлю пользовательский интерфейс с помощью навигационного ящика, и я пытаюсь обеспечить совместимость с версиями Android версии 2.1+. Чтобы оценить проблему, проект состоит из:
- Основной вид деятельности;
- Ящик для навигации;
- Четыре фрагмента (с соответствующими макетами).
Проблема, с которой я столкнулся, возникает при открытии ящика навигации: хотя каждое Fragment
имеет свое конкретное меню, когда я открываю навигационный ящик, он добавляется в меню навигационного ящика. Я попытался несколькими способами (invalidateOptionMenu()
, menu.clear()
, манипулируя функциями isDrawerOpen()
и isDrawerClose()
и т.д.), Но я не могу удалить меню Fragment
при открытии навигатора.
Вот некоторые фрагменты моего кода, большая часть которых была создана Android Studio, используемой мной IDE:
В основном действии:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater().inflate(R.menu.global, menu);
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);
}
где "global" - это простое меню с классическим "ic_action_overflow".
И в моих фрагментах я:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment1, menu);
}
(То же самое относится к другим Fragment
s).
Кто-нибудь может дать мне несколько советов о том, как действовать?