4

このコードを使用して、コンテキストメニューのクリックされたアイテムの位置を取得しています。

public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    int index = info.position;
}

ここで提案されているように:

Android:コンテキストメニューからクリックされた位置を見つける方法

しかし、次の行でNullPointerExceptionが発生します。

 int index = info.position;

なんでそうなの?

編集

次のように、contextMenuに2つのビューを登録しました。

button1.onClick(view v){
registerForContextMenu(v);
openContextMenu(v);
}

button2.onClick(view v){
registerForContextMenu(v);
openContextMenu(v);
}

次に、v.getId()に応じて、メニューにデータを入力します。

4

2 に答える 2

0

このチュートリアルを参照してくださいhttp://www.stealthcopter.com/blog/2010/04/android-context-menu-example-on-long-press-gridview/

于 2012-09-14T12:49:51.217 に答える
0

直接使用できます:

編集開始

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info;
    try {
        info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    } catch (ClassCastException e) {
        // If the menu object can't be cast, logs an error.
        Log.e("MENU", "bad menuInfo", e);
        return;
    }
    position = sectionAdapter.getIndexForPosition(info.position);
    menu.setHeaderTitle("");
    String[] menuItems = { "item1","item2","item3","item4" };
    for (int i = 0; i < menuItems.length; i++) {
        menu.add(Menu.NONE, i, i, menuItems[i]);
    }
}

編集された終わり

public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    int position = item.getItemId();
    switch (position) 
    {

        case 0:
        break;
        .
        .
        .
        default:
        break;
    }
}

それがあなたを助けることを願っています。

于 2012-09-14T12:51:02.350 に答える