无法添加和删除片段和导航抽屉的菜单选项
问题描述:
我得到一个隐藏和添加菜单项在片段和导航抽屉的问题,因为我在我的应用程序我有注销和添加联系人菜单,我想设置注销全部选项,但不需要在所有屏幕上添加联系人按钮。由于我的应用程序包含四个视图分页器选项卡片段和导航抽屉。我通过菜单XML文件添加了我的菜单。 我希望我的注销选项在导航抽屉中的所有片段中,但只在我的第一个选项卡片段中添加联系人。无法添加和删除片段和导航抽屉的菜单选项
这里是主要活动代码:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
val menuInflater = menuInflater.inflate(R.menu.main, menu)
val menuLogout = menu.findItem(R.id.logout)
val menuadd = menu.findItem(R.id.iadd_contact)
return super.onCreateOptionsMenu(menu)
}
override fun onOptionsItemSelected(item: android.view.MenuItem): Boolean {
when (item.itemId) {
R.id.logout -> {
postLogout(path, params) { response ->
}
}
return true
R.id.iadd_contact -> {
val intent = Intent(Intent.ACTION_INSERT)
intent.setType(ContactsContract.Contacts.CONTENT_TYPE)
startActivity(intent)
return true
}
}
return super.onOptionsItemSelected(item)
}
,当我从片段A移动到片段B什么是与去我只想要注销按钮启用和添加联系人禁用,然后当我再次去恢复从片段B到片段我的添加联系人菜单也获得禁用,但我希望只在片段A中,并且与我在打开抽屉式导航器时发生的相同
而在片段中,我已将此代码设置为:
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
menu!!.removeItem(R.id.iadd_contact)
}
而且oncreateview:
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// TODO Auto-generated method stub
setHasOptionsMenu(false)
rootv = inflater!!.inflate(R.layout.edit_profile, container, false)
activity.invalidateOptionsMenu()
return rootv
}
只要我只想我的R.id.iadd_contact
在我的第一个选项卡的片段,以使在所有其他片段禁用所以由于堆栈或从另一个片段再次移动片段回到我的第一个标签片段我的加入R.id.iadd_contact
也被删除。
答
第一个覆盖onCreate方法
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
然后充气菜单中的片段
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
menu!!.clear()
inflater!!.inflate(R.menu.main, menu)
}
这并没有工作:( –
从MainActivity删除onCreateOptionsMenu并添加到片段..创建单独的菜单文件 – Pavya
这工作正常与简单viewpager选项卡片段。我已创建separete onCreateOptionsmenu片段。但现在问题即时获取与导航抽屉片段文件。当我来自导航抽屉片段文件bac k到我的标签片段,然后可见性也消失了。我如何处理导航抽屉碎片文件也是如此。 –