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还是没有改变。
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还是没有改变。
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;
}
}