MenuIntem getMenuInfo()在创建上下文菜单时返回null

时间:2013-07-13 21:56:17

标签: android actionbarsherlock

我正在尝试理解用于创建上下文菜单的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
        ...
    }
}

根据我对上下文菜单应该如何工作的模糊理解,我希望信息包含db行id或至少是targetView,我可以从中检索id作为标记。

请告诉我出错的地方或我如何检测上下文菜单显示的ListView项目。

1 个答案:

答案 0 :(得分:0)

android - why item.getMenuInfo is null

提问者没有将其标记为已接受的答案,所以我不知道它是否解决了他的问题,但看起来你做的与他做的一样。

将菜单注册为上下文菜单而不是行项。