Android 从活动移动到片段:如何仅显示一个片段的菜单?

Android 从活动移动到片段:如何仅显示一个片段的菜单?,android,android-fragments,android-menu,Android,Android Fragments,Android Menu,我是一个Android编程新手,试图从活动转移到片段 我有一个简单的蓝牙应用程序,包含3项活动: MainActivity(菜单中有“设置”) 设置带有少量复选框和搜索栏的活动 扫描活动在列表中显示蓝牙设备 这是MainActivity的屏幕截图,右上角有一个省略号菜单: 我正在尝试将我的应用程序更改为具有单个MainActivity,其中显示3个片段之一(MainFragment、SettingsFragment或ScanningFragment): 我的问题是当前始终显示“设置”菜单,而我

我是一个Android编程新手,试图从活动转移到片段

我有一个简单的蓝牙应用程序,包含3项活动:

  • MainActivity(菜单中有“设置”)
  • 设置带有少量复选框和搜索栏的活动
  • 扫描活动在列表中显示蓝牙设备
  • 这是MainActivity的屏幕截图,右上角有一个省略号菜单:

    我正在尝试将我的应用程序更改为具有单个MainActivity,其中显示3个片段之一(MainFragment、SettingsFragment或ScanningFragment):

    我的问题是当前始终显示“设置”菜单,而我只需要在显示主片段时显示它(但在显示设置片段或扫描片段时不需要)

    如何最好地解决这个问题


    我是否必须引入一个枚举变量,我可以查询该变量以找到当前显示的3个片段中的哪一个,或者是否有更好的方法?

    您可以覆盖片段中应该有菜单的onCreateOptions菜单,并仅在那里膨胀它

    在片段中:

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

    在要显示菜单的片段中使用
    onCreateOptions菜单()
    ,而不是在活动中。在不想显示菜单的其他片段中,使用
    sethaspoptionmenu(false)


    要获取当前片段,请使用
    FragmentManager中的
    findFragmentByTag()?以及如何使用
    findFragmentByTag()
    查找当前显示的片段-例如,如果MainFragment在后堆栈中并且显示SettingsFragment,它是否会返回NOTNULL?是的,您可以在
    onCreateView()中使用它。由于使用的是
    replace()
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
         super.onCreateOptionsMenu(menu, inflater);
         inflater.inflate(R.menu.your_fragment_menu);
    }