gpt4 book ai didi

android - 从 fragment 调用 setHasOptionsMenu(true) 会导致多次调用 Activity 中的 onCreateOptionsMenu

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:54 27 4
gpt4 key购买 nike

我有一个简单的 Activity,其中包含一个 ViewPager。我试图从我的一个 Fragment 向菜单添加一些菜单项,但是我遇到了一些奇怪的行为。调用: setHasOptionsMenu(true); 从我的 fragment 中导致每次我在 ViewPager 中更改 fragment 时调用封闭 Activity 的 onCreateOptionsMenu() 方法>。这是正常的吗?

最佳答案

这绝对是“正常的”。它可能不适合您的特定用例,但绝对是预期的行为。

查看 android.support.v4.app.Fragment.setHasOptionsMenu() 的源代码:

public void setHasOptionsMenu(boolean hasMenu) {
if (mHasMenu != hasMenu) {
mHasMenu = hasMenu;
if (isAdded() && !isHidden()) {
mActivity.supportInvalidateOptionsMenu();
}
}
}

您可以看到它在其 Activity 上调用了 supportInvalidateOptionsMenu(),这最终导致在 Activity 及其所有 fragment 上调用了 onCreateOptionsMenu()。当从 Activity 的 fragment 管理器中添加/删除 fragment 时,框架如何管理更新选项菜单。

关于android - 从 fragment 调用 setHasOptionsMenu(true) 会导致多次调用 Activity 中的 onCreateOptionsMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22151458/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com