gpt4 book ai didi

android - 当我们将它们添加到 fragment 和主要 Activity 中时,选项菜单的流程是怎样的?

转载 作者:可可西里 更新时间:2023-10-31 22:03:41 24 4
gpt4 key购买 nike

我正在学习 android,我有点不确定菜单选项是如何工作的。这是我的设置,

I have a main activity which has a fragment inside it. Main activity's onCreateOptionsMenu looks like this

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

这个 menu_main.xml 只有设置按钮。我应该在 fragment 中添加一个刷新按钮,所以我创建了一个新的菜单 xml 并将这段代码添加到 fragment 类中

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.tempfragment, menu);
}

当我运行应用程序并长按时,我看到了刷新和设置按钮。

我的问题是,当我们有主 Activity 及其关联 fragment 的菜单选项时,流程是怎样的?它是否结合了两个菜单?我可以看到它正在合并,但我不确定它是如何在内部处理的?有人可以给我解释一下吗?

编辑这是 fragment 的菜单文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >

<item android:id="@+id/action_refresh" android:title="action_refresh"
app:showAsAction="never"
/>
</menu>

最佳答案

如果您有一个 MainActivity 来扩展选项菜单,menu_main.xml,那么该选项菜单将始终出现在 MainActivity 创建。

在每个 fragment 代码中,您可以为该特定 fragment 创建选项菜单。假设您在 FriendsFragment 中扩充了 menu_friends.xml。当 FriendsFragment 的实例由 MainActivity 创建时,menu_main.xml menu_friends.xml 将被显示。您可以对所有 fragment 重复此操作。

编辑:@Kartheek 关于在取消 Activity 菜单的 fragment 中调用 setHasOptionsMenu(true) 的回答不正确。该语句所做的只是允许该 fragment 创建一个菜单。 两个菜单都将包括在内。看这里: Calling setHasOptionsMenu(true) from a fragment results in multiple calls to onCreateOptionsMenu in Activity

关于android - 当我们将它们添加到 fragment 和主要 Activity 中时,选项菜单的流程是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30841175/

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