2 つのリストビュー、bookmarklistview と historylistview が重なり合っています。historylistview が表示されると Bookmarklistview は非表示になり、その逆も同様です。そして長いクリックイベントのために、コンテキストメニューを作成しています。長いクリック イベントは historylistview で正常に機能します。
ブックマークリストビューのアイテムを長押しすると問題が発生し、ブックマークリストビューのコンテキストメニューの代わりにヒストリーリストビューのコンテキストメニューが表示されます。
これはどのように起こりますか?何か案が?
以下は、ブックマークリストビューコンテキストメニューのコードです
public void onCreateContextMenuBookmark(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Delete Bookmark?");
menu.add(1, 1, 1, "Delete");
menu.add(1, 2, 2, "Cancel");
}
public boolean onContextItemSelectedBookmark(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getTitle() == "Delete"){
// delete item
}else if(item.getTitle() == "Cancel"){
}
return false;
}
以下は historylistview contextmenu のコードです
public void onCreateContextMenuHistory(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Delete History?");
menu.add(1, 1, 1, "Delete");
menu.add(1, 2, 2, "Cancel");
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getTitle() == "Delete"){
// delete item
}else if(item.getTitle() == "Cancel"){
}
return false;
}
わかりました。両方のビューに単一のコンテキスト メニューを使用できることがわかりました。次のようなものです。
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, v.getId(), 0, "Delete");
menu.add(0, v.getId(), 0, "Cancel");
break;
case R.id.bookmark_listView:
menu.setHeaderTitle("Delete Bookmark?");
menu.add(0, v.getId(), 0, "Delete");
menu.add(0, v.getId(), 0, "Cancel");
}
}
しかし、ビューごとに 2 つの異なる onContextItemSelected() メソッドを呼び出すにはどうすればよいでしょうか。