- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在运行时切换 ActionBar
上“向上”按钮(左箭头)的可见性。我尝试使用项目 id R.id.home
访问 onPrepareOptionsMenu
中的按钮,因为此 id 在 onOptionsItemSelected
中工作,但是我不断收到 IndexOutOfBoundsException
对于 Activity 创建时 onPrepareOptionsMenu
中的特定行。 “向上”按钮的正确项目 ID 是什么?或者是否有更好的方法在运行时切换“向上”按钮?
这是我的代码:
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem up = menu.getItem(R.id.home);
if (phase != Phase.IDLE) { // this is the runtime situation in which I want to disable the Up navigation
up.setVisible(false);
} else {
up.setVisible(true);
}
return true;
}
我也尝试过android.R.id.home
,得到了同样的错误。
最佳答案
我通过 Android 文档找到了解决方案,并认为最好将其发布回此处。尽管其他答案都没有完全有效地切换“向上”按钮(至少在我正在使用的平台上),但其中一些(和评论)非常有帮助,特别是在指出我使用 ActionBar.setDisplayHomeAsUpEnabled()
时。 。然而,这里的关键是调用 invalidateOptionsMenu()
强制重新绘制菜单。
引用documentation :
On Android 3.0 and higher, the options menu is considered to always be open when menu items are presented in the app bar. When an event occurs and you want to perform a menu update, you must call invalidateOptionsMenu() to request that the system call onPrepareOptionsMenu().
所以我的最终解决方案是:
ActionBar
作为实例变量(感谢@rupinderjeet);setDisplayHomeAsUpEnabled()
关于ActionBar
每当我想切换向上按钮时;invalidateOptionsMenu()
每次调用setDisplayHomeAsUpEnabled()
后立即.关于java - 如何访问 onPrepareOptionsMenu 中的 "Up"按钮并在运行时切换其可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48636097/
我是一名优秀的程序员,十分优秀!