Ich bin neu in Android-Entwicklung und irgendwie auch Java. Ich lerne, wie man Tasten zu Actionbar hinzufügen - alles funktioniert, aber ich verstehe nicht wenige Dinge.mend.findItem Erklärung und Verwirrung
//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;
}
dieser Zeile: menuItem = menu.findItem (. R.id recBin); Für was genau? Ich nahm es ab und meine App stürzte ab, also verstehe ich, dass es obligatorisch ist. Was ich nicht verstehe ist, welche Icons ID ich im fetten Raum setzen soll? Es muss von "Menü" richtig sein, aber spielt es eine Rolle, welche ID ich nehme? Zum Beispiel, wenn ich R.id genommen habe. closeBtn statt recBin? Solange es eine ID aus dem Menü ist, funktioniert es? P.S. Ich hoffe, das ist keine schreckliche Frage [ist wahrscheinlich] und es tut mir leid, wenn dem so ist.
Lösung: Stellt sich heraus, dass Sie IDs einfach erhalten können. Dumm und einfach.
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;
}
Dank entfernen können. Eine Lösung gefunden - und das Ende des Themas. – JasonM