Red de conocimiento informático - Computadora portátil - La diferencia entre menú contextual y menú de opciones

La diferencia entre menú contextual y menú de opciones

Hola, la diferencia es la siguiente:

ContextMenu es el menú contextual de Android. Después de seleccionar una VISTA y presionar prolongadamente la tecla de menú, se mostrará.

Por ejemplo, Editar texto puede abrir un menú contextual con "cortar", "copiar", "pegar" y otros elementos presionando prolongadamente.

Para implementar ContextMenu, generalmente se utilizan los siguientes tres métodos:

(1)registerForContextMenu(getExpandableListView());

(2)onCreateContextMenu(ContextMenu menu); , Ver v,ContextMenuInfo menuInfo);

(3)onContextItemSelected(MenuItem item);

>>ContextMenu y OptionsMenu tienen las siguientes diferencias principales:

1 ContextMenu debe registrarse a través de RegisterForContextMenu (Ver) de Actividad, pero OptionsMenu no.

2. ContextMenu no admite íconos, pero OptionsMenu sí.

3. ContextMenu puede tener un encabezado. Puede configurar el encabezado a través de setHeaderIcon, setHeaderTitle y setHeaderView. De lo contrario, no habrá encabezado.

4. El método emergente es diferente.

5. El propietario del menú de opciones es Actividad y el propietario del menú contextual es Ver en Actividad.

Cada Actividad tiene un único Menú de Opciones, que sirve a toda la Actividad.

Una actividad a menudo tiene varias vistas y no todas las vistas tienen un menú contextual. Esto requiere que llamemos a RegisterForContextMenu (vista de vista) para especificar.

Nota: Después de seleccionar cualquier elemento del ContextMenu, el sistema cerrará automáticamente todo el ContextMenu, incluso si hay varias opciones. En este caso, el comportamiento de múltiples opciones es un poco extraño. Después de verificar el código fuente de Android, descubrí que se trata de un error de Android. Debería deberse a que Google no consideró múltiples opciones.

Aunque el propietario del menú contextual es Ver, el menú contextual se genera a través del método onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) en Actividad, que es muy similar a onCreateOptionsMenu() método que genera el menú Menú de opciones).

La diferencia entre los dos es que onCreateOptionsMenu solo se llama cuando el usuario presiona la tecla "Menú" por primera vez,

y onCreateContextMenu se llamará cada vez que el usuario presione prolongadamente. la Vista. Y la Vista debe haber registrado el menú contextual.

Otra cosa que vale la pena señalar es ContextMenuInfo en la imagen de arriba. El objeto de esta clase se pasa al método onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo), entonces, ¿para qué se utiliza? A veces, el elemento de vista necesita pasar alguna información al menú contextual, como el ID del registro de base de datos correspondiente a la Vista, etc. En este caso, se utiliza ContextMenuInfo. Las vistas que necesitan pasar información adicional deben anular el método getContextMenuInfo() y devolver un objeto de clase de implementación ContextMenuInfo con datos.

Habiendo introducido tanto, aquí hay una demostración que muestra cómo crear y responder a un menú contextual:

1. Registre un contexto para una vista en onCreate(... ) método Menú

2. Generar menú contextual en onCreateContextMenuInfo(...).

3. Responda al elemento del menú contextual en onContextItemSelected(...).