我正在尝试找到我的活动的操作栏的微调器,以便我可以有选择地显示和隐藏它(setNavigationMode
不适用于我的目的)。我尝试了此代码,但操作栏似乎不在我的活动(它是 的扩展SherlockFragmentActivity
)根视图中。
private View findActionBarSpinner() {
View rootView = findViewById(android.R.id.content).getRootView();
List<View> spinners = traverseViewChildren( (ViewGroup) rootView );
return findListNavigationSpinner(spinners); // implement according to your layouts
}
我为 rootView 得到的只是一个 FrameLayout,其中包含在我的布局文件中定义的 RelativeLayout(仅包含其中的元素)。我没有看到任何看起来像操作栏或微调器的东西,并且确实 traverseViewChildren (在上面的链接中)返回一个空列表。
本着这个答案的精神,我也试过了View rootView = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
。结果是一样的。
我正在打电话给findActionBarSpinner
inside onOptionsItemSelected
。(虽然我无法访问它,但此时操作栏是完全可见的并且工作正常,所以我怀疑这是在生命周期的错误部分尝试访问它的问题。)
有任何想法吗?