如何使用 AppCompat / 工具栏和片段实现 onCreateOptionsMenu



我有一个扩展ActionBarActivity并使用新工具栏的活动,在该活动中,我填充了我的上下文菜单,当它显示工具栏时,工具栏被正确隐藏,因为我使用以下:

<item name="windowActionModeOverlay">true</item>

然后我动态创建一个片段,该片段还具有使用以下选项:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
   ...
}

然后,由于我有一个列表,因此我以这种方式添加一个上下文菜单:

mListView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
   ...
}

问题是片段上下文菜单的行为似乎不同,我需要使用"android:windowActionModeOverlay"来自动隐藏工具栏,并且忽略了"app:showAsAction"等appcompat参数。

如何在片段中正确实现 appcompact 上下文菜单?我看到在Appcompat库的源代码中有一个ActionBarFragment,但它不在master分支或已发布的库中。

我还没有使用抽屉。

自己发现了问题,而不是使用:

mActionMode = getActivity().startActionMode(contextMenuListener);

我不得不使用:

mActionMode = getActivity().getSupportActionBar().startActionMode(contextMenuListener);

当然,实现支持库 ActionMode 而不是内置模式。

最新更新