2016-11-07 2 views
1

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

Antwort

0

Es ist ein Verweis auf MenuItem, aber es wäre einfacher, wenn Sie das tun:

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

Sie sicher den Verweis darauf

+0

Dank entfernen können. Eine Lösung gefunden - und das Ende des Themas. – JasonM