活动之间的Android共享菜单

时间:2013-12-13 12:34:51

标签: android menu android-fragments android-activity android-fragmentactivity

我需要创建一个在所有活动之间都有共享菜单的应用程序,但我犹豫不决 在为所有活动创建相同的菜单并使这些活动成为“单例”之间,或创建多个片段并在一个包含菜单的活动中使用它们。

我想让我的应用程序与大多数设备兼容,所以我不知道哪一个是最好的(对于内存管理和可重用的东西......)

我该怎么办?如果有比这两个更好的过程,请随时提出建议:)

2 个答案:

答案 0 :(得分:4)

一种方法是定义所有其他活动将继承的父类活动。在父类onCreateOptionsMenu中,您可以定义所有活动通用的菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.common_menu, menu);
    return true;
}

答案 1 :(得分: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)。