【发布时间】:2014-06-01 23:43:26
【问题描述】:
我正在尝试根据可见的片段在我的操作栏中显示/隐藏项目。
在我的 MainActivity 我有以下
/* Called whenever invalidateOptionsMenu() is called */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(this.myFragment.isVisible()){
menu.findItem(R.id.action_read).setVisible(true);
}else{
menu.findItem(R.id.action_read).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
这很好用,但是当设备旋转时会出现问题。旋转完成后,再次调用 onPrepareOptionsMenu 但是这次 this.myFragment.isVisible() 返回 false ...因此,当片段清晰可见时,菜单项被隐藏(就显示的内容而言屏幕上)。
【问题讨论】:
-
不确定,但您是在纵向和横向模式下使用相同的片段,还是在横向模式下也添加一些其他片段?当它重新初始化时旋转时,您确定它已附加到 FragmentActivity。您可以使用 fragment.isAdded() 进行检查?
-
是的,在我做的活动 onCreate 方法中:this.myFragment = new MyListFragment();然后 this.myFragment 在整个活动中被引用
标签: android