У меня есть стандартный код для ContextMenu (долгое нажатие на пункт ListView), но я создал этот класс (помощник Dialog) и не зарегистрируетContextMenu в диалоге
onContextItemSelected
метод, я понятия не имею, почему. В чем проблема? =/ В моем макете XML у меня есть обычный ListView с @ + id/list (Я не расширяю ListActivity).
public class CheckListDialog extends Dialog implements OnClickListener {
public CheckListDialog(Context context) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mainContext = context;
setContentView(R.layout.dialog_check_list);
list = (ListView) findViewById(R.id.list);
registerForContextMenu(list);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
doSomething(); // This IS working.
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v == list) {
// This IS working.
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Something");
String[] menuItems = mainContext.getResources().getStringArray(R.array.menu);
for (int i = 0; i<menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
}
}
// This IS NOT working! (Method isn't called at all)
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
String[] menuItems = mainContext.getResources().getStringArray(R.array.menu);
String menuItemName = menuItems[menuItemIndex];
if (menuItemName.equals("Delete")) {
doSomething();
}
return true;
}
@Override
public void onContextMenuClosed(Menu menu) {
doSomething();
}
private ListView list;
}