使用两个片段处理操作栏

时间:2012-04-10 21:18:34

标签: android android-layout android-fragments actionbarsherlock

我有一个包含两个片段的布局,两个片段都有自己的操作栏,每个操作栏都有自己的操作项和菜单。当我的应用程序处于横向模式并且两个片段都显示在屏幕上时,看起来框架正在选择在“右侧”(或第二个片段)上显示操作栏,这意味着左侧的片段(第一个片段) )缺少其动作项和菜单选项。

当应用程序处于纵向模式时,一切正常,所以我不确定在显示它们时是否应该做一些事情来处理碎片。感谢。

修改

在我的每个片段中,我都使用此代码将菜单项添加到操作栏:

在片段1中:

    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
        inflater.inflate(R.menu.fragment_menu_1, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

在片段2中:

    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
        inflater.inflate(R.menu.fragment_menu_2, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

更新:

显然使用setRetainInstance(true)导致菜单无法刷新。我正在使用它,因为我有一个AsyncTask,如果设备被旋转,则抛出异常。所以我解决了一个问题,但打破了另一个问题。

1 个答案:

答案 0 :(得分:9)

我认为你错误地考虑了这一点。操作栏不会显示为任何片段的一部分,但实际上是活动的一部分。如果您在片段中声明通过setHasOptionsMenu(true)提供了操作项,那么所有内容都将显示为操作栏的一部分。然后,您可以通过覆盖onOptionsItemSelected(MenuItem item)来执行相应的操作。