在活动之间共享Android菜单

3
我需要创建一个应用程序,所有活动都有共享菜单,但我在创建所有活动的相同菜单并使这些活动成为“单例”之间犹豫不决,还是创建多个片段并在一个活动中使用它们,该活动将拥有该菜单。
我希望我的应用程序与大多数设备兼容,因此我不知道哪一个是最好的(对于内存管理和可重用的东西...)
我应该尝试什么?如果有比这两者更好的流程,请随时建议 :)
2个回答

5

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

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

2
我认为最好使用Fragments。您将拥有一个单一的Activity,带有菜单,如果一个Fragment有个人菜单,您可以通过将这些方法添加到您的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...
}

编辑

还要记得在Fragment的onCreate()方法中添加setHasOptionsMenu()。在这种情况下,Android框架会调用Fragment类中的onCreateOptionsMenu()方法,并将其菜单项添加到Activity添加的菜单项中(参见this link)。


@Mehdi 英语不是我的母语,很难为我写出很好的解释,抱歉。关于内存管理,请阅读此链接 https://dev59.com/32oy5IYBdhLWcg3wiem6) - JJ86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接