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 항목을 찾을 수있는 방법을 알려주십시오.
그 대답에 따르면 CursorAdapter에 의해 뒷받침되는 ListView를 전달하는 registerForContextMenu를 호출해야합니다. 그러나 내가 할 때 Longpress 액션은 ListView의 각 행에있는 뷰에서 모든 클릭 리스너를 바인딩 해제 한 후에도 전혀 등록되지 않습니다. – fir3wired