上下文菜单无法显示

时间:2012-10-19 14:39:55

标签: android listview contextmenu android-sqlite

在我的代码中,我想添加一个上下文菜单。我有一个来自我的数据库的列表。我有一个名为 MONEY 的表,它有四个字段: ID FIRSTNAME MONEY DESCRIPTION 。我的列表视图工作正常,但上下文菜单不起作用。问题出在onContextItemSelected()方法中。当我长按列表项时,它不会显示上下文菜单。

contextmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<Menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/Delete"
    android:title="Delete"/>

</Menu>

Money.java

package com.anurag.main;

public class Money extends Activity {
ArrayList list1, list2, list3, list4;
TextView text1, text2, text3, text4;
ImageView iv;
ListView mList;
SQLiteDatabase db;
private static String DBNAME = "MainDB.db";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.money);
    mList = (ListView) findViewById(R.id.mList);
    list1 = new ArrayList();
    list2 = new ArrayList();
    list3 = new ArrayList();
    list4 = new ArrayList();
    try {
        db = openOrCreateDatabase(DBNAME, MODE_WORLD_READABLE, null);
        Cursor c = db.rawQuery("select * from MONEY", null);
        while (c.moveToNext()) {
            list1.add(c.getString(1));
            list2.add(c.getString(3));
            list3.add(c.getString(5));
            list4.add(c.getString(4));
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
//Problem in this code 
    mList.setAdapter(new MyArrayAdapter(getApplicationContext()));

    mList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            // TODO Auto-generated method stub
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.contextmenu, menu);

        }
    });

    //end here
}
//problem in this code
@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item 
            .getMenuInfo(); 
    switch (item.getItemId()) {
    case R.id.Delete:
        Toast.makeText(getApplicationContext(), "Deleted",    Toast.LENGTH_LONG).show();
        return true;

    default:
        Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_LONG).show();
    }
    return super.onContextItemSelected(item);
}
//End Here
class MyArrayAdapter extends BaseAdapter {
    Context context;

    public MyArrayAdapter(Context c) {
        context = c;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        // return 0;
        return list1.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        // View v = inflater.inflate(R.layout.custom1, null);
        convertView = inflater.inflate(R.layout.custom1, null);
        text1 = (TextView) convertView.findViewById(R.id.text1);
        // text1.setText(list1[position]);
        text1.setText(list1.get(position).toString());
        text2 = (TextView) convertView.findViewById(R.id.text2);
        text2.setText(list2.get(position).toString());
        text3 = (TextView) convertView.findViewById(R.id.text3);
        text3.setText(list3.get(position).toString());
        text4 = (TextView) convertView.findViewById(R.id.text4);
        text4.setText(list4.get(position).toString());
        return convertView;
    }

}

}

1 个答案:

答案 0 :(得分:1)

下注错误是在解析.xml文件时,它是“Expecting menu,got Menu”。将<Menu></Menu>中的contextmenu.xml去大写,看看是否能解决它。