android - onOptionsItemSelected 在片段中不起作用
问题描述
我试图在我的一个 ViewPager Fragmets 中放置一个菜单。当您单击其中一个选项时,不执行操作,仅关闭菜单。我在 StackOverFlow 上查找了其他问题,但它们对我帮助不大。我该如何解决这个错误?
class CFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_c, container, false)
val toolbar = view.findViewById(R.id.toolbarCFragement) as Toolbar
toolbar.inflateMenu(R.menu.menu_c)
//...
return view
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_c, menu)
super.onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.optionOne) {
Toast.makeText(requireActivity(), "One", Toast.LENGTH_SHORT).show()
return true
} else if (item.itemId == R.id.optionTwo) {
startActivity(Intent(requireActivity(), Members::class.java))
return true
} else if (item.itemId == R.id.optionThree) {
Toast.makeText(requireActivity(), "Three", Toast.LENGTH_SHORT).show()
return true
}else{
return super.onOptionsItemSelected(item)
}
}
}
菜单:
<?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/optionOne"
app:showAsAction="never"
android:title="@string/optionOne">
</item>
<item android:id="@+id/optionTwo"
android:title="@string/optionTwo">
</item>
<item android:id="@+id/optionThree"
android:title="@string/optionThree">
</item>
</menu>
解决方案
当您尝试在工具栏布局中膨胀菜单项时,请执行此操作。
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_c, container, false)
val toolbar = view.findViewById(R.id.toolbarCFragement) as Toolbar
toolbar.inflateMenu(R.menu.menu_c)
toolbar.setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.optionOne -> {
Toast.makeText(requireActivity(), "One",
Toast.LENGTH_SHORT).show()
}
R.id.optionTwo -> {
startActivity(Intent(requireActivity(),
Members::class.java))
}
// your reset case
}
true
}
return view
}
无需覆盖
onCreateOptionsMenu
推荐阅读
- xml - XSLT 1.0 如果条件
- ios - 为什么 UITableViewCell 会缩小 contentView?
- excel - 循环遍历 VBA 中的复选框
- php - 警告:php 中的参数无效
- ms-word - Word Online 有时仅加载
- linux - 使用 spawn -open 时,Bash Expect 不响应击键
- bixby - Bixby - 如何将整个 $user 对象传递给方法
- python-3.x - 在 Pandas 中,如何使用 Multi-Index 过滤其他数据帧
- java - Java 捕获并显示 SqlExceptionHelper
- python - 如何使用python读取excel文件中的特定行