0

Насколько я знал, контекстное меню может быть зарегистрировано для любого вида не только для ListView. Сегодня я пытаюсь зарегистрировать контекстное меню для пользовательского ImageView. Например:Контекстное меню Android для любого вида

// 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; 
    } 
} 

Я не нашел примеров регистрации контекстного меню без ListView. Кто-нибудь даст мне один пример или может понять, чего я не хватает?

ответ

0

вам нужно написать super.onCreateContextMenu(menu, v, menuInfo); после всего кода, как:

@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); 

    } 
} 
Смежные вопросы