我正在尝试找到我的活动的Action Bar的微调器,因此我可以有选择地显示和隐藏它(setNavigationMode
不能用于我的目的)。我尝试了this code,但操作栏似乎不在我的活动中(这是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(在上面的链接中)返回一个空列表。
我也本着this answer,View rootView = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
的精神尝试过。结果是一样的。
我正在findActionBarSpinner
内拨打onOptionsItemSelected
。 (虽然我无法访问它,但操作栏完全可见并且此时正常工作,因此我怀疑这是在生命周期的错误部分尝试访问它的问题。)
有什么想法吗?