Android 如何为多个片段实现CAB

Android 如何为多个片段实现CAB,android,android-fragments,Android,Android Fragments,我有一个ActionBarActivity,它有两个选项卡。我在tab1fragment1中实现了ActionMode.Callback。现在我还想在tab2fragment2中实现它。问题是,即使在我滑动到tab2之后,tab1上下文操作栏仍处于活动状态。这意味着CAB是为一个活动实现的,而不是为特定的片段实现的 那么,在同一活动中托管两个片段中的不同CAB的方法是什么呢?在onCreateActionMode回调中,在片段中保存对ActionMode的引用,然后在片段的onPause中完成操

我有一个ActionBarActivity,它有两个选项卡。我在tab1fragment1中实现了ActionMode.Callback。现在我还想在tab2fragment2中实现它。问题是,即使在我滑动到tab2之后,tab1上下文操作栏仍处于活动状态。这意味着CAB是为一个活动实现的,而不是为特定的片段实现的

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

在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();
    }
}

移动到另一个奇怪的TabFragments时,不会执行onPause。然后,我假设在活动中更改活动选项卡时,您有一个侦听器。你可以在那里做同样的事情,使用回调。啊,这是有道理的。现在,我在第二个片段中实现了弹出式上下文菜单。下次一定会试试你的主意。