我在工具栏中有两个选项。单击一个项目时,将启用该项目。然后必须禁用另一个项目。但是,一旦项目被禁用,我就不能再点击该项目上的点击事件了。无论如何我可以点击禁用项目吗?
谢谢
我确实喜欢这个,但它不再起作用了
MenuItem tureMenuItem;
MenuItem dingMenuItem
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.lore_fragment, menu);
tureMenuItem = menu.findItem(R.id.menu_ture);
dingMenuItem = menu.findItem(R.id.menu_ding);
tureMenuItem.setEnabled(true);
dingMenuItem.setEnabled(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_ding:
tureMenuItem.setEnabled(true);
dingMenuItem.setEnabled(false);
break;
case R.id.menu_ture:
tureMenuItem.setEnabled(false);
dingMenuItem.setEnabled(true);
break;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:1)
使用setEnabled()将起作用。管理你的条件。
您必须正确对这些菜单项执行某些操作。你可以在行动结束时启用其他项目。因为你还没有发布我只有选项。使用Handler.PostDelayed。
boolean isMenuEnabled;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==R.id.action_settings) {
this.isMenuEnabled = true;
tureMenuItem.setEnabled(true);
dingMenuItem.setEnabled(false);
handler.postDelayed(runnable,1000);
return true;
}
else if(item.getItemId()== R.id.action_settings1) {
this.isMenuEnabled = true;
tureMenuItem.setEnabled(false);
dingMenuItem.setEnabled(true);
handler.postDelayed(runnable,1000);
return true;
}
return super.onOptionsItemSelected(item);
}
删除回调
@Override
protected void onDestroy() {
handler.removeCallbacks(runnable);
super.onDestroy();
}
延迟运行
Runnable runnable = new Runnable() {
@Override
public void run() {
if(isMenuEnabled){
tureMenuItem.setEnabled(true);
dingMenuItem.setEnabled(true);
isMenuEnabled=false;
}
}
};
答案 1 :(得分:0)
您需要检查以下示例代码到disable
和enable
菜单项,反之亦然。
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
if(menu.getItem(0))
{
menu.getItem(0).setEnable(false);
menu.getItem(1).setEnable(true);
}
else if(menu.getItem(1))
{
menu.getItem(1).setEnable(false);
menu.getItem(0).setEnable(true);
}
return super.onPrepareOptionsMenu(menu);
}