如何使用新的 menuprovider 在片段中添加选项菜单

lel*_*cia 2 android android-fragments

如何使用新的菜单提供程序在片段上添加选项菜单,特别是 searchview 菜单?

override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
    menuInflater.inflate(R.menu.explore, menu)
}

override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
    when (menuItem.itemId) {
        R.id.btn_search_menu -> {
            Log.d(TAG, "onMenuItemSelected: Clicked")
        }
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码,但菜单没有膨胀

ian*_*ake 5

正如Activity1.4.0-alpha01发行说明(其中MenuProvider添加了 API)所示,创建 aMenuProvider只是问题的一半 - 然后您需要调用addMenuProvidera MenuHostlike 您的 Activity:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    // The usage of an interface lets you inject your own implementation
    val menuHost: MenuHost = requireActivity()
  
    // Add the MenuProvider to the MenuHost
    menuHost.addMenuProvider(
      this, // your Fragment implements MenuProvider, so we use this here
      viewLifecycleOwner, // Only show the Menu when your Fragment's View exists
      Lifecycle.State.RESUMED // And when the Fragment is RESUMED
    )
}
Run Code Online (Sandbox Code Playgroud)