2013-07-13 5 views
1

컨텍스트 메뉴를 만드는 안드로이드 API 안내서를 이해하려고하는데 실제로 AdapterContextMenuInfo가 어떻게 사용되는지에 대한 설명을 제공하지 않습니다.MenuIntem getMenuInfo()는 컨텍스트 메뉴를 만들 때 null을 반환합니다.

내 코드 :

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.internal.widget.IcsAdapterView.AdapterContextMenuInfo; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 
... 

public class MyActivity extends SherlockActivity {} 
    ... 
    class MyCursorAdapter extends CursorAdapter { 
     ... 
     @Override 
     public View newView(Context context, Cursor cursor, ViewGroup parent) { 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      View rowView = inflater.inflate(R.layout.list_row, parent, false); 
      registerForContextMenu(rowView); 
      return rowView; 
     } 
    } 
    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     android.view.MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.context, menu); 
    } 

    @Override 
    public boolean onContextItemSelected(android.view.MenuItem item) { 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); 
     Log.d(MyApp.LOG_TAG, "info is null: "+ (info == null)); // info is null: true 
     ... 
    } 
} 

내 막연한 이해에서 컨텍스트 메뉴가 나는 dB 행 ID를 포함하거나 적어도 targetView이있는 나는 태그로 ID를 검색 할 수있는 정보를 예상 작동 해야하는 방법에 .

내가 잘못 가고있는 곳이나 상황 별 메뉴가 표시되는 ListView 항목을 찾을 수있는 방법을 알려주십시오.

답변

0

android - why item.getMenuInfo is null

가 자신의 문제를 해결하는 경우 나도 몰라 그래서 아스 커 그것은 허용 대답으로 표시하지 않은,하지만 당신은 그가 한 같은 일을하고있는 것 같습니다.

메뉴를 행 항목이 아닌 컨텍스트 메뉴로 등록하십시오.

+0

그 대답에 따르면 CursorAdapter에 의해 뒷받침되는 ListView를 전달하는 registerForContextMenu를 호출해야합니다. 그러나 내가 할 때 Longpress 액션은 ListView의 각 행에있는 뷰에서 모든 클릭 리스너를 바인딩 해제 한 후에도 전혀 등록되지 않습니다. – fir3wired

관련 문제