我是Android开发的新手,也是Java的新手。 我正在学习如何向操作栏添加按钮 - 一切正常,但我不了解一些事情。
//Showing small icons at actionbar
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
menuItem = menu.findItem(R.id.recBin); // Finds the button in Actionbar and gets the ID
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.recBin: // Actions for delete button
dbHandler.remove(getID());
displayTaskList();
menuItem.setVisible(false); // Hide the button
break;
case R.id.editBtn: // Actions for editbutton
Toast.makeText(MainActivity.this,
"EDIT", Toast.LENGTH_LONG).show();
break;
case R.id.closeBtn:
Toast.makeText(MainActivity.this,
"CLOSE", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return true;
}
这一行:menuItem = menu.findItem(R.id。 recBin );究竟是为了什么?我把它关了,我的应用程序崩溃了,所以我明白这是强制性的。我不明白的是我应该在大胆的空间放置什么图标ID?它必须来自“菜单”权利,但重要的是我接受哪个ID?例如,如果我使用R.id. closeBtn 而不是recBin?只要它是菜单中的id,它有效吗? 附:我希望这不是一个可怕的问题[可能是],如果是的话,我很抱歉。
解决方案: 结果你可以简单地获得ID。愚蠢而简单。
private MenuItem item1, item2, item3;
//Showing small icons at actionbar
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
item1 = menu.findItem(R.id.recBin); // Rec button
item2 = menu.findItem(R.id.editBtn); // Edit button
item3 = menu.findItem(R.id.closeBtn); // Close button
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.recBin: // Actions for delete button
dbHandler.remove(getID());
displayTaskList();
item1.setVisible(false); item2.setVisible(false); item3.setVisible(false); // Hiding all buttons
break;
case R.id.editBtn: // Actions for editbutton
item1.setVisible(false); item2.setVisible(false); item3.setVisible(false); // Hiding all buttons
break;
case R.id.closeBtn:
item1.setVisible(false); item2.setVisible(false); item3.setVisible(false); // Hiding all buttons
break;
default:
break;
}
return true;
}
答案 0 :(得分:0)
这是对MenuItem的引用,但如果你这样做会更容易:
case R.id.recBin: // Actions for delete button
dbHandler.remove(getID());
displayTaskList();
item.setVisible(false); // Hide the button
break;
您可以安全地删除之后的参考