操作栏在 FragmentTransaction replace() 和 FragmentTransaction add() 上的行为方式

Posted

技术标签:

【中文标题】操作栏在 FragmentTransaction replace() 和 FragmentTransaction add() 上的行为方式【英文标题】:How action bar behave on FragmentTransaction replace() and FragmentTransaction add() 【发布时间】:2014-09-22 02:17:31 【问题描述】:

我正在使用片段,在我的应用程序中显示两个屏幕。 每个 Fragment 都有自己的一组用于操作栏按钮的菜单布局。

在使用 FragmentTransaction replace() 方法提交片段时,它可以通过扩展每个片段的菜单布局来正常工作。

在哪里

在使用 FragmentTransaction add() 方法提交片段时,它会膨胀两个片段的菜单布局。

FragmentTransaction 的 add() 方法如何改变行为。

是否可以调用 FragmentTransaction 的 add() 方法并仅针对可见的 Fragment 扩展菜单布局?

【问题讨论】:

【参考方案1】:

我得到了这个答案,每当我在 onCreateOptionsMenu 中添加任何片段时,我都应该调用 menu.clear()

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
    menu.clear();
    inflater.inflate(R.menu.menu_search, menu);


【讨论】:

以上是关于操作栏在 FragmentTransaction replace() 和 FragmentTransaction add() 上的行为方式的主要内容,如果未能解决你的问题,请参考以下文章

FragmentTransaction的commit的异步操作

使用 FragmentTransaction.attach() 和 detach() 时不保留 Fragment ui

操作栏在 Android 应用中显示为空

Nativescript - 搜索栏在操作栏中无法正确显示(IOS)

fragmentTransaction.add 和 fragmentTransaction.replace 之间的区别

共享元素过渡适用于 FragmentTransaction.replace() 但不适用于 FragmentTransaction.add()