У меня есть стандартный код для ContextMenu (долгое нажатие на элемент ListView), но я создал этот класс (вспомогательный диалог), и он не регистрирует
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;
}