2011-11-27 2 views
0

Dans le code suivant, findViewById retourne null:findViewById dans le menu gonflé

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { 
    if (view == this.getListView()) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
     final Message clickedMessage = this.adapter.getItem(info.position); 
     menu.setHeaderTitle(clickedMessage.getTitle()); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.showuser_context, menu); 
     View button = this.findViewById(R.id.showuser_contextmenu_showthread); 
     // I would like to call button.setOnClickListener here 
} 

Et res/menu/showuser_context.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/showuser_contextmenu_showthread" android:title="@string/showuser_contextmenu_showthread"></item> 
    <item android:id="@+id/showuser_contextmenu_reply" android:title="@string/showuser_contextmenu_reply"></item> 
</menu> 

I tryed "propre" (Projet -> Clean du menu principal eclipse) le projet, mais cela ne fonctionne toujours pas.

Cordialement, ProgVal

Répondre

1

Vous ne pouvez pas obtenir élément de menu par findViewById(); Au lieu de cela vous devez utiliser

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.showuser_contextmenu_showthread) 
     //Your stuff 
     return true; 
    } 
    return super.onContextItemSelected(item); 
} 
1

essayer:

View button = menu.findViewById(R.id.showuser_contextmenu_showthread); 

au lieu de:

View button = this.findViewById(R.id.showuser_contextmenu_showthread); 
+0

Bonne idée, mais elle renvoie toujours null. Idem pour 'view' au lieu de' this'. –

+0

logiquement, cela devrait fonctionner, car vous avez gonflé votre xml dans votre menu, alors quand vous essayez de trouver les vues en utilisant ceci, il cherchera votre View sur le ContentView de votre activité (pas de votre menu), c'est pourquoi vous devrait trouver votre point de vue dans votre instance de menu – Houcine