0

Soweit ich wusste, kann das Kontextmenü für jede Ansicht nicht nur für ListView registriert werden. Heute versuche ich das Kontextmenü für ein benutzerdefiniertes ImageView zu registrieren. Wie folgt:Android-Kontextmenü für jede Ansicht

// In onCreateView() method of activity 
registerForContextMenu(mViewHolder.profileImageView); 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    switch (v.getId()) { 
     case R.id.profile_imageview: 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
      menu.add(Menu.NONE, CONTEXT_MENU_ITEM_CHANGE_PICTURE, 0, "Change Picture"); 
    } 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case CONTEXT_MENU_ITEM_CHANGE_PICTURE: 
      //Toast.makeText(mParentActivity, "Delete " + info.position + "th item", Toast.LENGTH_LONG).show() 
      Toast.makeText(this, "Go to library", Toast.LENGTH_SHORT).show(); 
      return true; 
     default: 
      return true; 
    } 
} 

Ich habe kein Beispiel für die Registrierung von Kontextmenü ohne ListView gefunden. Würde mir jemand ein Beispiel geben oder herausfinden, was ich vermisse?

Antwort

0

müssen Sie super.onCreateContextMenu(menu, v, menuInfo); nach jedem Code schreiben wie:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 

    switch (v.getId()) { 
     case R.id.profile_imageview: 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
      menu.add(Menu.NONE, CONTEXT_MENU_ITEM_CHANGE_PICTURE, 0, "Change Picture"); 
      super.onCreateContextMenu(menu, v, menuInfo); 

    } 
}