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