gpt4 book ai didi

java - mend.findItem解释和困惑

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:56 25 4
gpt4 key购买 nike

我是 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;
}

最佳答案

这是对 MenuItem 的引用,但如果这样做会更容易:

case R.id.recBin: // Actions for delete button
dbHandler.remove(getID());
displayTaskList();
item.setVisible(false); // Hide the button
break;

之后您可以安全地删除引用

关于java - mend.findItem解释和困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40474514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com