1

fragmentActivity의 격자보기에 대한 플로팅 컨텍스트 메뉴를 작성하려고합니다. 사용자가 클릭하는 항목을 가져오고 싶습니다. 나는 많은 게시물을 다 보았는데, 그들 모두는 onContextItemSelected에서 getMenuInfo() 메서드를 사용한다고 말하지만, 항상 나의 경우에는 null입니다. 아무도 도와 줄 수 있습니까? 에서 onCreate에서 Android 플로팅 컨텍스트 메뉴 항목 가져 오기

나는 this-

registerForContextMenu(mGridView); 

상황에 맞는 메뉴 방법을하고 있어요 - 드디어 일을 가지고

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Choose an option"); 
    menu.add(0, v.getId(), 0, "Hide"); 
    menu.add(0, v.getId(), 0, "Info"); 

} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    int position = info.position; // Null pointer Exception 

    if(item.getTitle()=="Hide") { 
      hideview(item.getItemId()); 
      return true; 
    } 
    else if(item.getTitle()=="Info"){ 
      showinfo(item.getItemId()); 
      return true; 
    } 
    else{ 
      return super.onContextItemSelected(item); 
    } 
} 

답변

0

.

문제점 : getContextMenuInfo() 메서드가 구현되지 않은 맞춤 GridView를 사용하고있었습니다. 나는 선 아래에 추가했습니다 그것은 완벽하게 작동 - 사람이 그것을 필요로하는 경우 난 그냥 경우에 작은 튜토리얼 here을 게시 한

@Override 
protected ContextMenuInfo getContextMenuInfo(){ 
    ContextMenuInfo menuInfo = super.getContextMenuInfo(); 
    if(menuInfo==null){ 
     final ListAdapter adapter = mAdapter; 
     final int motionPosition = mPerformClick.mClickMotionPosition; 
     if (adapter != null && mItemCount > 0 && 
       motionPosition != INVALID_POSITION && 
       motionPosition < adapter.getCount()) { 
      final View view = getChildAt(motionPosition); 

      if (view != null) { 
       final int clickPosition = motionPosition + mFirstPosition; 
       menuInfo = new AdapterContextMenuInfo(view, clickPosition, 
               adapter.getItemId(clickPosition)); 
      } 
     } 
    } 
    return menuInfo; 
} 

.