Android 如何在两个菜单图标之间切换
我的Android 如何在两个菜单图标之间切换,android,menuitem,Android,Menuitem,我的工具栏上有膨胀的菜单项。单击一个菜单项图标时,我想用另一个图标切换该图标,反之亦然。我这样做是为了在listview和gridview之间切换 我尝试的是使用不同的menu.xml重新创建菜单。但是当我从onOptionsItemSelected(MenuItem){}调用onCreateOptions菜单(菜单)时,应用程序崩溃 @覆盖 公共布尔值onOptionsItemSelected(菜单项项){ int id=item.getItemId(); if(id==R.id.actio
工具栏上有膨胀的菜单
项
。单击一个菜单
项图标时,我想用另一个图标切换该图标,反之亦然。我这样做是为了在listview
和gridview
之间切换
我尝试的是使用不同的menu.xml
重新创建菜单。但是当我从onOptionsItemSelected(MenuItem){}
调用onCreateOptions菜单(菜单)
时,应用程序崩溃
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.action\u网格){
setVisibility(View.INVISIBLE);
gv.setVisibility(视图可见);
//我再次尝试重新创建菜单
OnCreateOptions菜单(菜单)
}
if(id==R.id.action\u列表){
setVisibility(View.VISIBLE);
gv.setVisibility(视图不可见);
//我再次尝试重新创建菜单
OnCreateOptions菜单(菜单)
}
返回super.onOptionsItemSelected(项目);
}
不要尝试重新创建菜单,只需更改图标并使用布尔标志保持状态:
boolean flag = true;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_grid_list_toggle) {
if (boolean) {
// Show grid view
item.setIcon(R.drawable.ic_grid);
listView.setVisibility(View.INVISIBLE);
gv.setVisibility(View.VISIBLE);
} else {
// Show list view
item.setIcon(R.drawable.ic_list);
listView.setVisibility(View.VISIBLE);
gv.setVisibility(View.INVISIBLE);
}
flag = !flag; // toggle value on every click
}
return super.onOptionsItemSelected(item);
}
您不需要每次都重新创建菜单,只需处理
MenuItems
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String title = item.getTitle().toString();
switch (title) {
case TITLE_GRIDVIEW:
item.setTitle(TITLE_LISTVIEW);
item.setIcon(R.drawable.listview_icon);
//switch to gridview
return true;
case TITLE_LISTVIEW:
item.setTitle(TITLE_GRIDVIEW);
item.setIcon(R.drawable.gridview_icon);
//switch to listview
return true;
}
return false;
}
它基于项目的绑定标题工作,这样,您只需要菜单中的一个项目在listview和gridview之间切换,这些项目就像一个切换按钮。我正在我的一个项目中执行这种类型的操作。见上面我的答案。它非常简单,可以解决任何问题。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String title = item.getTitle().toString();
switch (title) {
case TITLE_GRIDVIEW:
item.setTitle(TITLE_LISTVIEW);
item.setIcon(R.drawable.listview_icon);
//switch to gridview
return true;
case TITLE_LISTVIEW:
item.setTitle(TITLE_GRIDVIEW);
item.setIcon(R.drawable.gridview_icon);
//switch to listview
return true;
}
return false;
}