Android 是否可以在同一活动中选择多个OnContextItem
在和的帮助下,我为两个列表视图创建了一个上下文菜单,如下所示Android 是否可以在同一活动中选择多个OnContextItem,android,android-contextmenu,Android,Android Contextmenu,在和的帮助下,我为两个列表视图创建了一个上下文菜单,如下所示 final int DELETE = 0; final int CANCEL = 1; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu, v, menuInfo); switch(v.getId()){
final int DELETE = 0;
final int CANCEL = 1;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
switch(v.getId()){
case R.id.history_listView:
menu.setHeaderTitle("Delete History?");
menu.add(0, DELETE, 0, "Delete");
menu.add(0, CANCEL, 0, "Cancel");
break;
case R.id.bookmark_listView:
menu.setHeaderTitle("Delete Bookmark?");
menu.add(0, DELETE, 0, "Delete");
menu.add(0, CANCEL, 0, "Cancel");
}
}
现在我想要两个onContextItemSelected方法,一个用于历史记录,另一个用于书签。我已经为历史创造了一个,它运行良好
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case DELETE:
String deleteSelectedHistory = (String) historyData.get(info.position);
historyData.remove(info.position);
historyAdapter.notifyDataSetChanged();
break;
case CANCEL:
break;
}
return false;
}
但我无法为书签创建另一个。是否可以在同一活动中使用另一个onContextItemSelected方法?或者有办法创建第二个吗?请检查此代码。这可能对你有帮助
final int HIS_DELETE = 0;
final int HIS_CANCEL = 1;
final int BM_DELETE = 2;
final int BM_CANCEL = 3;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
switch (v.getId()) {
case R.id.history_listView:
menu.setHeaderTitle("Delete History?");
menu.add(0, HIS_DELETE, 0, "Delete");
menu.add(0, HIS_CANCEL, 0, "Cancel");
break;
case R.id.bookmark_listView:
menu.setHeaderTitle("Delete Bookmark?");
menu.add(0, BM_DELETE, 0, "Delete");
menu.add(0, BM_CANCEL, 0, "Cancel");
}
}
和onContextItemSelected方法,如
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
switch (item.getItemId()) {
case HIS_DELETE:
Log.d("System out", "HIS_DELETE");
break;
case HIS_CANCEL:
Log.d("System out", "HIS_CANCEL");
break;
case BM_DELETE:
Log.d("System out", "BM_DELETE");
break;
case BM_CANCEL:
Log.d("System out", "BM_CANCEL");
break;
}
return false;
}
请检查这个代码。这可能对你有帮助
final int HIS_DELETE = 0;
final int HIS_CANCEL = 1;
final int BM_DELETE = 2;
final int BM_CANCEL = 3;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
switch (v.getId()) {
case R.id.history_listView:
menu.setHeaderTitle("Delete History?");
menu.add(0, HIS_DELETE, 0, "Delete");
menu.add(0, HIS_CANCEL, 0, "Cancel");
break;
case R.id.bookmark_listView:
menu.setHeaderTitle("Delete Bookmark?");
menu.add(0, BM_DELETE, 0, "Delete");
menu.add(0, BM_CANCEL, 0, "Cancel");
}
}
和onContextItemSelected方法,如
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
switch (item.getItemId()) {
case HIS_DELETE:
Log.d("System out", "HIS_DELETE");
break;
case HIS_CANCEL:
Log.d("System out", "HIS_CANCEL");
break;
case BM_DELETE:
Log.d("System out", "BM_DELETE");
break;
case BM_CANCEL:
Log.d("System out", "BM_CANCEL");
break;
}
return false;
}
只需为历史记录和书签声明不同的ID即可。HIS_DELETE,HIS_CANCEL,BM_DELETE,BM_CANCEL.@HirenDabhi那么我如何检查按下了哪个删除,在onContextItemSeletedJust中,必须为历史记录和书签声明不同的ID。例如。他的删除,他的取消,BM删除,BM取消。@HirenDabhi那么在OnContextItemsSelete中,我如何检查按下了哪个删除,我遇到了这个问题,因为我觉得运气不错。为什么没有更多的选票?经过5年的进一步发展,你还发现这个最佳实践吗?我遇到了这个问题,因为我觉得运气不错。为什么没有更多的选票?经过5年的进一步发展,您是否仍能找到这一最佳实践?