【发布时间】:2017-08-30 05:58:43
【问题描述】:
在我的应用程序中,我遇到了在片段和导航抽屉中隐藏和添加菜单项的问题在所有屏幕中。因为我的应用程序包含四个视图寻呼机选项卡片段和导航抽屉。我已经通过菜单 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 时,我的添加联系人菜单也被禁用,但是我只想在片段 A 中,并且与打开导航抽屉时发生的情况相同
在片段中我设置了这样的代码:
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
menu!!.removeItem(R.id.iadd_contact)
}
它在创建视图上:
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 也被删除。
【问题讨论】:
标签: android android-fragments navigation kotlin navigation-drawer