2016-06-10 8 views
2

Berühren Sie die Frage here, möchte ich die Machbarkeit der Erstellung von Ressourcen-IDs für dynamisch erstellte Popup-Menüelemente kennen.Android: Dynamisch zuweisen Ressource-ID für Popup-Menü-Elemente

Ein kleiner Hintergrund: mein Popup-Menü enthält ein "Create new file" -Element neben einem Element für jede Datei in einem bestimmten Verzeichnis gefunden. Das Problem; Da ich nicht weiß, wie viele Dateien in dem Verzeichnis vorhanden sind, wenn die App gestartet wird, kann ich diese Menüelemente in meiner XML-Datei nicht hart codieren, daher haben sie keine Ressourcen-IDs. Ich brauche Ressourcen-IDs für die Elemente in meinem Popup-Menü zuweisen, damit ich die eine Ansicht Variable von einer einzelnen Position Ressource-ID erstellen kann, das heißt:.

View menuItemView = getActivity().getWindow().getDecorView().findViewById(R.id.item_id); 

I see, dass eine überladene Version von getMenu()() hinzufügen akzeptiert itemID als Parameter Kann ich diesen Parameter während der Laufzeit mit einem int setzen und später als Resourcen-ID für meine Zwecke oben darauf verweisen?

Dies ist mein kompletter Popup-Menü-Code, präsentiert die Art, wie ich Menüpunkte dynamisch generieren:

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
    @Override 
    public boolean onMenuItemClick(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.new_track: 
       trackSelectButton.setText("..."); 
       Toast.makeText(getActivity(), "Name your new track.", Toast.LENGTH_SHORT).show(); 
       txtTrackName.setVisibility(txtTrackName.VISIBLE); 
       return true; 

      default: 
       selectedTrackName = (item.getTitle().toString()); 
       trackSelectButton.setText(selectedTrackName); 
       for (int i = 0; i < trackListing.length; i++) { //add a menu item for each existing track 
        if (trackListing[i].getName().equals(selectedTrackName)) { 
         selectedTrack = trackListing[i]; 
         AudioRecorder.setFile(selectedTrack); 
        } 
       } 
       return true; 
     } 
    } 
}); 

MenuInflater popupInflater = popup.getMenuInflater(); 
popupInflater.inflate(R.menu.popup_menu_track_selection, popup.getMenu()); 
popup.show(); 

Wie kann ich dynamisch Ressourcen-IDs für Popup-Menüpunkte generiert? (aka Ressourcen IDs ohne eine XML-Datei zuweisen)

Antwort

Verwandte Themen