Я пытаюсь понять руководство по Android API для создания контекстных меню, но они действительно не дают никаких объяснений того, как предполагается использовать AdapterContextMenuInfo.
Мой код:
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
...
}
}
Из моего смутного понимания того, как должны работать контекстные меню, я ожидал, что информация будет содержать идентификатор строки базы данных или, по крайней мере, targetView, из которого я мог бы получить идентификатор в виде тега.
Пожалуйста, дайте мне знать, где я ошибаюсь или как еще я могу определить, для какого элемента ListView отображалось контекстное меню.