作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Android fragment 中声明菜单?我以前使用的方法现在已弃用。
原文:
override fun onCreateView(...): View {
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
this.menu = menu
inflater.inflate(R.menu.menu, this.menu)
}
最佳答案
从开发人员文档中,这可以通过以下方式实现:
/**
* Using the addMenuProvider() API directly in your Activity
**/
class ExampleActivity : ComponentActivity(R.layout.activity_example) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Add menu items without overriding methods in the Activity
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return true
}
})
}
}
/**
* Using the addMenuProvider() API in a Fragment
**/
class ExampleFragment : Fragment(R.layout.fragment_example) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// The usage of an interface lets you inject your own implementation
val menuHost: MenuHost = requireActivity()
// Add menu items without using the Fragment Menu APIs
// Note how we can tie the MenuProvider to the viewLifecycleOwner
// and an optional Lifecycle.State (here, RESUMED) to indicate when
// the menu should be visible
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return when (menuItem.itemId) {
R.id.menu_clear -> {
// clearCompletedTasks()
true
}
R.id.menu_refresh -> {
// loadTasks(true)
true
}
else -> false
}
}
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
Fragments setHasOptionsMenu deprecated, use setHasOptionsMenu
关于android - 'setHasOptionsMenu(Boolean) : Unit' is deprecated. 在 Java 中已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71917856/
我尝试在我的 Activity 中使用 setHasOptionsMenu(true); 但出现错误。 “无法解析方法 setHasOptionsMenu”。 @Override protected
如何在 Android fragment 中声明菜单?我以前使用的方法现在已弃用。 原文: override fun onCreateView(...): View { set
在我的 android 应用程序中,我试图将图标添加到 FragmentActivity 中的 ActionBar;但是,它仍然是空白的。本质上,我有一个 FragmentActivity,它带有单独
我有一个简单的 Activity,其中包含一个 ViewPager。我试图从我的一个 Fragment 向菜单添加一些菜单项,但是我遇到了一些奇怪的行为。调用: setHasOptionsMenu(t
我是一名优秀的程序员,十分优秀!