2009-12-21 26 views
7

apro il mio menu di contesto come questo:come chiamare menu contestuale

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

Come posso chiamare

registerForContextMenu(v); 
openContextMenu(v); 

da dentro il mio gestore di menu normale qui:

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

dove Non ho nessuna vista da superare?

+1

Stai cercando di mostrare un Menu contestuale da una voce di menu Opzioni? –

+0

Sì, questa è la domanda. – gdonald

+1

Questo è del tutto possibile, è solo che la tua domanda originale era piuttosto oscura e non compresa. Sono sorpreso che nessuno abbia risposto in seguito poiché il commento rende ciò che si desidera abbastanza chiaro. Quando le persone hanno difficoltà a comprendere la tua domanda, devi modificarla e rispondere ai commenti. – Casebash

risposta

14

La registrazione di un menu di scelta rapida è quando si desidera consentire all'utente di aprirlo facendo un clic lungo. Se si desidera aprirlo a livello di programmazione, è sufficiente chiamare openContextMenu. Per quanto riguarda l'ottenimento della vista, è possibile utilizzare findViewById se è stato assegnato un ID o salvato come attributo nella classe Activity.

+0

Grazie. Ho funzionato. – gdonald

0

Hai il this che è anche una vista.

+0

Nel contesto che ho descritto, "questa" è un'attività, non una vista. – gdonald

+1

Cosa stai facendo alla vista in questi metodi? La vista che stai passando non è la tua vista principale, è la vista che ha ottenuto l'evento, quindi il pulsante o qualsiasi altra cosa. – CaseyB

+0

onOptionsItemSelected() non fornisce l'accesso a una vista. Fornisce l'accesso a un MenuItem. Come posso chiamare registerForContextMenu() e openContextMenu() nel contesto di onOptionsItemSelected() dove mi viene dato solo un MenuItem, non una vista? Come ottengo la vista corrente dall'oggetto Menu? item.what? .Che? ? – gdonald

0

Forse quello che stai cercando è in realtà un submenu, dove consente di visualizzare un sottomenu cliccando sulla voce di menu.

+0

No, non è quello che sto cercando di fare. – gdonald

+0

Qualsiasi motivo DEVI far apparire un ContextMenu da OptionMenu, piuttosto che mostrare un sottomenu; dal punto di vista dell'interfaccia utente e del codice, sembrano quasi uguali. Se VERAMENTE DEVE, puoi passare in qualsiasi vista, come ImageView, TextView, Button, ecc. –

+0

Ma mi ha aiutato .. grazie :) –

Problemi correlati