2009-12-21 37 views
7

Abro menú contextual de la siguiente manera:cómo llamar menú contextual

private OnClickListener optionsClickListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
    registerForContextMenu(v); 
    openContextMenu(v); 
    } 
}; 

¿Cómo puedo llamar

registerForContextMenu(v); 
openContextMenu(v); 

desde el interior de mi controlador de menú habitual aquí:

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
    case OPTIONS: 
     registerForContextMenu(v); 
     openContextMenu(v); 
     return true; 

donde No tengo vista para pasar?

+1

¿Está tratando de mostrar un ContextMenu desde un elemento del menú de opciones? –

+0

Sí, esa es la pregunta. – gdonald

+1

Esto es completamente posible, es solo que su pregunta original no estaba muy clara y no se entendió. Me sorprende que nadie haya contestado esto más adelante ya que el comentario deja bastante claro lo que usted quiere. Cuando las personas tienen problemas para entender su pregunta, debe editarla, así como responder a los comentarios. – Casebash

Respuesta

14

El registro de un menú contextual es cuando desea permitir que el usuario lo abra haciendo un clic prolongado. Si desea abrirlo programáticamente, simplemente debe llamar al openContextMenu. En cuanto a obtener la vista, puede usar findViewById si le dio una identificación o la guardó como un atributo en su clase Activity.

+0

Gracias. Lo tengo funcionando. – gdonald

0

Tiene this que también es una vista.

+0

En el contexto que describí, "esto" es una actividad, no una vista. – gdonald

+1

¿Qué estás haciendo a la vista en estos métodos? La vista que está pasando no es su vista principal, es la vista la que obtuvo el evento, por lo que el botón o lo que sea. – CaseyB

+0

onOptionsItemSelected() no proporciona acceso a una Vista. Proporciona acceso a un elemento de menú. ¿Cómo llamo registerForContextMenu() y openContextMenu() en el contexto de onOptionsItemSelected() donde solo se me proporciona un MenuItem, no una View? ¿Cómo obtengo la vista actual desde MenuItem? item.what? .what? ? – gdonald

0

Tal vez lo que está buscando es en realidad un submenu, donde le permite abrir un submenú al hacer clic en el elemento del menú.

+0

No, eso no es lo que estoy tratando de hacer en absoluto. – gdonald

+0

Cualquier razón por la que DEBE abrir un ContextMenu desde OptionMenu, en lugar de mostrar un sub menú; desde la perspectiva de UI y Código, se ven casi iguales. Si REALMENTE DEBE, puede pasar cualquier Vista, como ImageView, TextView, Button, etc. –

+0

Pero me ayudó ... gracias :) –

Cuestiones relacionadas