Контекстное меню во фрагменте внутри фрагмента (ActionMode)

Я получил фрагмент B во фрагменте A в действии. Работает как положено. При нажатии элемента во фрагменте B я хочу отобразить контекстное меню бар.

Я работаю с ActionbarSherlock. Что я сделал внутри своего Фрагмента B:

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.entry_list_context_menu, menu);
        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // make sure no item is selected when bar is shown
        adapter.clearSelection();
        adapter.notifyDataSetChanged();
        return false;
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        Log.d("EntryList", "Item '" + item.getTitle()
                + "' clicked [onActionItemClicked()]");
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        adapter.clearSelection();
        adapter.notifyDataSetChanged();
        contextualMode = null;
    }
};
private ActionMode contextualMode;

@Override
public void onItemClick(AdapterView<?> parentView, View itemView,
        int index, long id) {
    DocumentEntity entry = (DocumentEntity) itemView.getTag();
    // something went wrong
    if (entry == null) {
        Log.e("EntryList", "Tag-Less item clicked [onItemClick()]");
        return;
    }

    if (contextualMode != null) {
        Log.d("EntryList",
                "contextualMode is not yet initialized [onItemClick()]");
        contextualMode = getSherlockActivity().startActionMode(
                mActionModeCallback);
    } else {
        Log.d("EntryList",
                "contextualMode already initialized [onItemClick()]");
    }

    entry.setSelected(!entry.isSelected());
    Log.d("EntryList", "entry.selected set to " + entry.isSelected()
            + " [onItemClick()]");
}

Выбор работает довольно хорошо, но контекстная панель действий не отображается. Результат отладки:

contextualMode уже инициализирован [onItemClick()] для entry.selected установлено значение «true» [onItemClick()]

Нет другой позиции, где установлен contextualMode...


person Basic Coder    schedule 23.05.2012    source источник
comment
Я получил фрагмент B во фрагменте A в действии. Работает как положено. -- ожидаемые в данном случае средства не работают, так как фрагменты внутри фрагментов не поддерживаются, по словам инженера, написавшего их: stackoverflow.com/questions/6847460/fragments-within-fragments/   -  person CommonsWare    schedule 23.05.2012


Ответы (1)


Я получил фрагмент B во фрагменте A...

Android не поддерживает встраивание фрагмента в другой фрагмент. Извини. Это наводит меня на мысль, что ваша проблема выходит за рамки того факта, что ваш контекстный ActionBar не отображается. Я предлагаю вам уточнить исходный пост.

person Alex Lockwood    schedule 26.05.2012