2012-05-23 62 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沒有被顯示。我建議你澄清你的原始帖子。