如何为多个片段实现CAB

时间:2014-11-13 11:28:41

标签: android android-fragments

我有ActionBarActivity有两个标签。我在tab1(fragment1)中实现了ActionMode.Callback。现在我想在tab2(fragment2)中实现它。问题是即使我滑动到tab2后tab1上下文操作栏也处于活动状态。这意味着CAB旨在为活动实现,而不是针对特定片段。

那么在同一活动中托管的两个片段中使用不同CAB的方法是什么?

1 个答案:

答案 0 :(得分:0)

onCreateActionMode回调中保存片段中ActionMode的引用,然后在您的片段onPause中,您可以完成操作。例如:

protected class MultiChoiceModeListener implements AbsListView.MultiChoiceModeListener {
    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        ConversationFragment.this.actionMode = mode;
        MenuInflater menuInflater = getActivity().getMenuInflater();
        menuInflater.inflate(R.menu.menu_delete_conversation, menu);
        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }

    @Override
    public boolean onActionItemClicked(final ActionMode mode, MenuItem item) {  
        return false;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        ConversationFragment.this.actionMode = null;
    }
}
@Override
public void onPause() {
    super.onPause();
    if (actionMode != null) {
        actionMode.finish();
    }
}