2015-02-02 2 views
0

Я изо всех сил, чтобы найти решение проблемы:ContextMenuInfo возвращает нуль при вызове showContextMenu - андроид

Я хочу, чтобы открыть Контекстное только для элементов в положении 1 и выше.

Я зарегистрировал свой ListView:

registerForContextMenu(mDrawerList); 

я зарегистрировать OnItemLongClickListener:

mDrawerList.setOnItemLongClickListener(new OnItemLongClickListener() { 

      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       if (position != 0) 
        mDrawerList.showContextMenu(); 
       return true; 
      } 
     }); 

Но в onCreateContextMenu, ContextMenuInfo возвращает нуль, Если удалить OnItemLongClickListener и оставить его с одного вызова от registerForContextMenu, затем ContextMenuInfo не является нулевым .. :

public void onCreateContextMenu(ContextMenu menu, View v, 
      ContextMenuInfo menuInfo) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; 
     selectedPosition = info.position; 
.... 
... 
} 

Как его решить?

+0

удалите длинный клик для прослушивания ... теоретически вам нужно зарегистрировать контекстное меню элементы в ящике, а не сам ящик, и вам не нужно называть «showContextMenu» –

ответ

0

удалить длинный клик слушателя ... теоретически необходимо зарегистрироваться для контекстного меню на самом ящике, и вам не нужно называть «showContextMenu»

Это должно быть так:

в ваш фрагмент ящика вы пишете это:

registerForContextMenu(mDrawerListview); 

удалить onItemLongClickListener, потому что оно должно быть вызваны тем, что вы зарегистрировали для контекстного меню, ваш Длинное нажатие слушатель отменяет его

+0

Привет, я предположил, что вы имели в виду, что я должен добавить registerForContextMenu (convertView) внутри моего адаптера? если да, у меня все еще такая же проблема ... результат тот же – ranifisch

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