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

标签 android

我正在学习 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/

相关文章:

Android - 在特定日期和时间在 Firebase 作业调度程序中运行作业

android - FLAG_KEEP_SCREEN_ON 反向工作

android - 两种不同 Activity 的两种风格

android - 如何使用 Android 应用程序传送内容(图像)?

android - 使用 HashMap 映射 String 和 int

java - 为什么在继续之前要检查所有条件?

android - 如何在 PhoneGap 应用程序启动时启动 Android Activity ?

android - 如何在 Eclipse 中为新的 Nexus 7 2 创建模拟器

java - Java人工生成cpu负载

Android:获取 HTTP 页面并抓取它