OnContextItemSelected no se llama en un DialogFragment

Tengo un diálogo que muestre una lista de artículos, necesito poder corregir / suprimir artículos en esta lista así que puse un menú del contexto adentro así que cuando el usuario presiona largo sobre un artículo él pueden elegir lo que desean hacer ( Editar o eliminar el elemento).

El problema es que onContextItemSelected nunca se llama cuando se selecciona un elemento en el menú contextual.

He comprobado para ver si tal vez la actividad que creó el fragmento de diálogo es obtener la devolución de llamada, pero que tampoco es así ¿por qué no se llama? ¿No puedes hacer un menú contextual en un diálogo?

 public class TypesDialogList extends DialogFragment implements LoaderManager.LoaderCallbacks<Cursor>,OnItemClickListener,OnCreateContextMenuListener{ ListView lv; SimpleCursorAdapter mAdapter; private int EDIT_TYPE = 1; private int DELETE_TYPE = 2; OnEditType mType; public Dialog onCreateDialog(Bundle state){ final View v = getActivity().getLayoutInflater().inflate(R.layout.layer_dialog_layout, null, false); lv = (ListView)v.findViewById(R.id.listView1); lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); lv.setOnItemClickListener(this); lv.setOnCreateContextMenuListener(this); return new AlertDialog.Builder(getActivity()).setView(v).setPositiveButton("Add Type", new OnClickListener(){ public void onClick(DialogInterface dialog, int which) { } }).setTitle("Type's").create(); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; long id = info.id; if(id > 3){ menu.setHeaderTitle("Type Menu"); menu.add(Menu.NONE, EDIT_TYPE, 1, "Edit"); menu.add(Menu.NONE, DELETE_TYPE, 2, "Delete"); }else{ Toast.makeText(getActivity(),"Cannot edit type",Toast.LENGTH_SHORT).show(); } } @Override public boolean onContextItemSelected(MenuItem item) { super.onContextItemSelected(item); AdapterView.AdapterContextMenuInfo oMenuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); long id = oMenuInfo.id; if(item.getItemId() == EDIT_TYPE){ }else if(item.getItemId() == DELETE_TYPE){ } return true; } 

}

Para cualquier persona que todavía está buscando una solución, acabo de solucionar este problema creando un OnMenuItemClickListener anónimo que delegue de nuevo a onContextItemSelected(MenuItem item) y fijándolo en todos los artículos en mi menú.

 @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { // Creation/inflate menu here OnMenuItemClickListener listener = new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { onContextItemSelected(item); return true; } }; for (int i = 0, n = menu.size(); i < n; i++) menu.getItem(i).setOnMenuItemClickListener(listener); } 
  • Abrir un DialogFragment desde dentro de un CustomView
  • Margen de diseño / relleno en la parte superior del fragmento de diálogo
  • Cómo cambiar el color de fondo alrededor de un DialogFragment?
  • ¿Debe ser una clase DialogFragment interna estática o no?
  • Cómo crear un DialogFragment sin título?
  • DialogFragment pérdida de memoria
  • DialogFragment anidado se descarta después de la rotación
  • Cómo utilizar RoboDialogFragment con un diseño personalizado
  • Android: Orden de DialogFragments cambiando después de la actividad se reanuda
  • DialogFragment de Android vs Diálogo
  • Cómo reemplazar un fragmento de diálogo de pantalla completa con otro sin mostrar la actividad de los padres?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.