【问题标题】:Android Shared menu between activitiesAndroid 活动之间的共享菜单
【发布时间】:2013-12-13 12:34:51
【问题描述】:
我需要创建一个在所有活动之间具有共享菜单的应用程序,但我犹豫了
在为所有活动创建相同的菜单并使这些活动成为“单件”之间,或者创建多个片段并将它们用于具有菜单的一个活动中。
我想让我的应用程序与大多数设备兼容,所以我不知道哪一个是最好的(用于内存管理和可重用的东西......)
我应该尝试什么?如果有比这两个更好的过程,请随时提出建议:)
【问题讨论】:
标签:
android
menu
android-fragments
android-activity
android-fragmentactivity
【解决方案1】:
一种方法是定义一个父类活动,所有其他活动都将从该活动继承。在父类onCreateOptionsMenu 中定义所有活动通用的菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.common_menu, menu);
return true;
}
【解决方案2】:
我认为使用Fragments 会更好。您将拥有一个带有菜单的 Activity,如果 Fragment 有个人菜单,您可以通过将以下方法添加到您的 Fragment 轻松更新 actionBar:
@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...
}
编辑
还记得在 Fragment 的 onCreate() 方法中添加 setHasOptionsMenu()。在这种情况下,Android 框架调用 Fragment 类中的 onCreateOptionsMenu() 方法,并将其菜单项添加到 Activity 添加的菜单项中(请参阅this link)。