2012-06-03 2 views
0

ListFragment 내의 메뉴 항목에 info.position으로 액세스하면 NullPointerEx가 표시됩니다. 아무도 이유를 아나요?ListFragment 항목 가져 오기 - NPE

 listView.setOnItemLongClickListener(new OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       if (mCurrentActionMode != null) { 
        return false; 
       } 

       mCurrentActionMode = getSherlockActivity().startActionMode(
         mContentSelectionActionModeCallback); 
       view.setSelected(true); 
       return true; 
      } 
     }); 
    } 


private ActionMode.Callback mContentSelectionActionModeCallback = new ActionMode.Callback() { 
      @Override 
      public boolean onActionItemClicked(ActionMode actionMode, MenuItem item) { 
       switch (item.getItemId()) { 
        case R.id.delete: 
         delete(item); 
         actionMode.finish(); 
         return true; 
        } 
       return false; 
      } 
} 



     private void delete(MenuItem item) { 
      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
      Log.i("test", String.valueOf(info.position)); //NPE 
     } 
+0

항목을 비공개로 가져 오지 못합니다. delete() {? –

+0

아니요'info.position'에 Null 포인터 예외가 생겼습니다 – membersound

+0

오, 죄송합니다. 위의 함수 인수 MenuItem 항목이 없습니다. 그래서이 삭제 기능은 삭제 (항목)와 다릅니다; ? 그래서 코드 –

답변

0

당신이 사용하려고하는 범위를 벗어난 것처럼 보입니다.

위치를 onItemLongClick으로 가져와 다른 방법으로 삭제 기능에 전달해야합니다.

+0

죄송합니다 delete()에서 MenuItem 인수를 잊어 버렸습니다. 물론 항목을 전달합니다. – membersound

+0

메뉴 항목이 아닌 id/position을 전달하려고했습니다. 그게 가장 쉬운 방법 같아. – Barak

+0

흠. 좋아, 그럼 난'문자열 위치'var을 onClickListener 내에서 설정했을 것이다. 그러나 콜백의 MenuItem은 어떻게 사용할 수 없습니까? 웹에서 그렇게 많은 예제가이 접근법을 제안하는 이유는 무엇입니까? – membersound