2012-05-23 49 views
1

我在活动中的片段A中获得了片段B.按预期工作。 单击片段B中的项目时,我想显示一个contextual menu栏。片段内部片段中的上下文菜单(ActionMode)

我正在使用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设置 为 '真'[onItemClick()]

有其中contextualMode设定没有其他位置。 ..

+2

“我在活动中的片段A中获得了片段B,按预期工作。” - 在这种情况下,“期望”意味着“不起作用”,因为片段内部的片段不被支持,根据写他们的工程师:http://stackoverflow.com/questions/6847460/fragments-within-fragments/ 6847770#6847770 – CommonsWare

回答

1

我在片段的有一个片段B ...

的Android不支持在另一个片段中嵌入片段。抱歉。这使我相信你的问题超出了你的背景ActionBar没有被显示。我建议你澄清你的原始帖子。