1

我正在尝试找到我的活动的操作栏的微调器,以便我可以有选择地显示和隐藏它(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();。结果是一样的。

我正在打电话给findActionBarSpinnerinside onOptionsItemSelected。(虽然我无法访问它,但此时操作栏是完全可见的并且工作正常,所以我怀疑这是在生命周期的错误部分尝试访问它的问题。)

有任何想法吗?

4

0 回答 0