0

カスタムアダプターを備えたListViewがあります。そして今まで、長押しでコンテキストメニューを持っていました。そして、これでクリックのためにこれをやり直します

 getListView().setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() 
    {

        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
            //To register the button with context menu.
                            registerForContextMenu(getListView());
                            openContextMenu(getListView());

        }
    });

これだけの代わりに

registerForContextMenu(getListView());

この変更の前は問題なく動作していましたが、今は NullPointerException が発生してinfo.idおり、修正方法がわかりません。返信ありがとうございます。

 @Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    Intent i;
    Log.d("item id", String.valueOf(item.getItemId()));
    switch (item.getItemId()) {

    case R.id.spotreba:    
         i = new Intent(this, SpotrebaActivity.class);
         i.putExtra("idAuta", info.id);
         startActivityForResult(i, REQUEST_ADD_AUTO);
         return true;
         .
         .
         .
4

1 に答える 1

0

ListViewあなたが作った内部クラス(onItemClickListener)ではなく、アクティビティのコンテキストメニューを登録する必要があります。

のように書きます..

registerForContextMenu(getListView());
getListView().setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() 
    {

        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
               openContextMenu(getListView());
        }
    });
于 2013-08-31T12:07:22.560 に答える