选项菜单以双倍形式出现

发布于 2024-12-01 14:08:47 字数 257 浏览 1 评论 0原文

我在 Activity 中有一个 Fragment。此活动包含OptionsMenu

我使用 FragmentTransaction 启动同一 Fragment 类的新实例,当我选择 OptionsMenu 时,它显示为双倍,因为它加载了两次。

我该如何管理片段之间的选项菜单

谢谢。

PS:对不起英语

I Have a Fragment inside an Activity. This Activity contains OptionsMenu.

I use a FragmentTransaction to launch a new instance of the same Fragment class, when I selected the OptionsMenu, it appears in double because it load twice.

How can I do to manage OptionsMenu between the Fragments

Thanks.

PS : Sorry for the English

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

耀眼的星火 2024-12-08 14:08:47

没有办法这样的办法。您可以处理 BackPressed 并将您自己的自定义菜单显示为新的片段网络。或者根据您的片段类和内容在 FragmentTransaction 不活动状态下管理您的选项菜单

There is no way such way. You can handle on BackPressed and show your own custom menu as a new fragmnet. Or manage your options menu inside of FragmentTransaction inactivity in dependent of your fragment class and content

栩栩如生 2024-12-08 14:08:47

我找到了一个解决方案,

我仅在活动中创建选项菜单。
我也得到了 Activity 上的 OptionsItemsSelected 。

当 onOptionsItemSelected() 发生时,我得到当前的 Fragment,如下所示:

FragmentManager fg = getSupportFragmentManager();
Fragment frag = fg.findFragmentById(R.id.fragmentMap);

我的所有 Fragment 都有相同的 id,但我总是得到顶部的 Fragment。
然后,我可以调用 :

frag.onOptionsItemSelected(item);

来接收 Fragment,并且我的 UI 会正确更新。

我希望它有帮助。

I find a solution,

I create the OptionsMenu only in the Activity.
I get the OptionsItemsSelected on the Activity too.

When onOptionsItemSelected() occur, I get the current Fragment like this :

FragmentManager fg = getSupportFragmentManager();
Fragment frag = fg.findFragmentById(R.id.fragmentMap);

All my Fragment have the same id but I always get the Fragment on the top.
Then, I can call :

frag.onOptionsItemSelected(item);

to the Fragment receive and my UI is correctly update.

I hope It helps.

心如狂蝶 2024-12-08 14:08:47

尝试在 Fragment 扩展类中使用 setHasOptionsMenu(boolean)
如果设置为 true,FragmentManager 应自动调用当前片段的 onOptionsItemSelected
如果它设置为 false,您可以在 Activity 的 onOptionsItemSelected 中手动调用这些回调。

为我工作...:)

Try playing with setHasOptionsMenu(boolean) in your Fragment extending classes,
if that is set to true the FragmentManager should automatically call your current fragment's onOptionsItemSelected,
it set to false you can manually call those callbacks yourself in your Activity's onOptionsItemSelected.

Worked for me... :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文