public boolean onPrepareOptionsMenu(Menu menu) {
        final boolean haveItems = getListAdapter().getCount() > 0;
        if (haveItems) {
            Log.i("test", "haveItems=="+getListView().getSelectedItemId());
            if (getListView().getSelectedItemId() > 0) {
                menu.removeGroup(1);
                Intent intent = new Intent();
                menu.add(1, DEL, 1, "删除歌曲").setIntent(intent);
            }
        }else{
            menu.removeGroup(1);
        }
        return true;
    }
为什么用final 类型,你这样,final的话你这个值就固定了,onPrepareOptionsMenu()在Menu改变时会直接调用这个函数,你用final,即使你删除了Item.但你这个判断值haveItems还是没有改变。

解决方案 »

  1.   

    你可以定义一个变量初始值是id = -1;当点击操作时 id = select id;当你删除后,手动将id = -1;你的menu再根据Id的值进行布局就可以了!
      

  2.   

    \你的方法试过了,没有搞定,不过通过查阅资料,额已经搞定,具体修改如下:    public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
         menu.add(0, INSERT, 0, "添加歌曲");
         menu.add(1, DEL, 1, "删除歌曲");
            return true;
        }
        
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            switch(item.getItemId()) {
            case INSERT:
    Intent intent=new Intent(this,ResourceActivity.class);
    intent.putExtra("list_id", playlist_id);
    startActivity(intent);
                return true;
            case DEL:
             listDbAdapter.delMusic(getListView().getSelectedItemId());
             renderListView();
             return true;
            }
            return super.onMenuItemSelected(featureId, item);
        }
        
    public boolean onPrepareOptionsMenu(Menu menu) {
    if(getListView().getSelectedItem()!=null){
    menu.setGroupVisible(0, true);
    menu.setGroupVisible(1, true);
    return true;
    }else{
    menu.setGroupVisible(1, false);
    menu.setGroupVisible(0, true);
    return true;
    }
    }