3

Мне нужно создать приложение, в котором есть общее меню между всеми действиями, но я колеблюсь между созданием одного и того же меню для всех действий и создания «одноэлементов» этих действий или создания нескольких фрагментов и их использования в одном действии, которое будет иметь меню.Android Общее меню между действиями

Я хочу, чтобы мое приложение совместимо с большинством устройств, так что я не знаю, какой из них является лучшим (для управления памятью и многоразового питания ...)

Что я должен попробовать? если есть более эффективный процесс, чем эти два, не стесняйтесь предлагать :)

ответ

2

Я думаю, гораздо лучше использовать Fragments. Вы будете иметь единую активность, с меню и, если фрагмент имеет персональное меню, вы можете обновить ActionBar легко, добавляя эти методы к вашему Fragment:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_preview, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection... 
} 

EDIT

Помните также добавить setHasOptionsMenu() в методе onCreate() фрагмента. В этом случае платформа Android вызывает метод onCreateOptionsMenu() в классе Fragment и добавляет свои пункты меню к тем, которые добавлены в Activity (см. this link).

+0

И для управления памятью, что лучше? – Mehdi

+0

@Mehdi English - не мой родной язык, и мне сложно написать очень хорошее объяснение, извините. Для управления памятью, пожалуйста, прочитайте эту ссылку http://stackoverflow.com/questions/8482606/when-a-fragment-is-replaced-and-put-in-the-back-stack-or-removed-does-it- оставаться) – JJ86

3

Один из способов сделать это - определить родительский класс, который наследует все другие действия. В классе родительского onCreateOptionsMenu вы определяете меню, которое является общим для всех видов деятельности:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.common_menu, menu); 
    return true; 
} 
Смежные вопросы