我尝试在片段中控制onclick的选项菜单时迷路了。有太多的解决方案,我甚至不知道从哪里开始。
我看到一些地方,人们告诉我们使用NavController,其他人告诉我们在活动和片段中都使用onOptionsItemSelected,并覆盖您需要的内容。最重要的是,我们有了甚至不需要膨胀的androidx.appcompat.widget.Toolbar,只需在XML文件中使用app:menu=就可以了,但是我如何监听点击呢?
<androidx.appcompat.widget.Toolbar
app:menu="@menu/menu_fragment_main">我让它在活动中工作,但后来不得不使用片段,并陷入了这种混乱,我只想让菜单像在活动中一样工作。
发布于 2019-09-22 14:51:19
val toolbar = fragmentInflater.findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbarMainActivity)
(activity as AppCompatActivity).setSupportActionBar(toolbar)这解决了问题,现在有点累了,但我会评论一下为什么会发生这种情况。
我认为这是xml中的工具栏,androidx,错误的工具栏导入非android x等等的混合。
发布于 2019-09-21 16:18:20
您需要在片段onCreate()方法中调用setHasOptionsMenu:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}下面是如何扩展菜单并响应单击:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.refresh:
//Respond to click
break;
}
return true;
}这是你的menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/refresh" android:title="Refresh" android:icon="@drawable/ic_action_refresh" />
</menu>发布于 2020-04-26 02:25:54
在样例中,创建了一个连接到AboutMe活动/片段的overflow_menu。它使用导航方向转到关于我的页面-
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/about"
android:title="@string/about" />
</menu>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.overflow_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.about -> navigateAbout(item)
}
return super.onOptionsItemSelected(item)
}
private fun navigateAbout(item: MenuItem) {
view!!.findNavController()
.navigate(TitleFragmentDirections.actionTitleFragmentToAboutFragment())
}https://stackoverflow.com/questions/58038440
复制相似问题