2016-06-10 68 views
2

接觸問題here,我想知道爲動態創建的彈出式菜單項創建資源ID的可行性。Android:動態分配彈出式菜單項的資源ID

一點背景:我的彈出式菜單除了給定目錄中的每個文件都包含一個「創建新文件」項目。問題;因爲我不知道應用程序啓動時目錄中有多少文件,所以我無法在XML文件中對這些菜單項進行硬編碼,因此它們沒有資源ID。我需要分配的項目資源ID在我的彈出式菜單,所以我可以從單個項目的資源ID創建一個視圖變量,即:

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

I see一個)重載版本使用getMenu的()加入(接受itemID作爲參數。我可以在運行期間用int設置這個參數,然後以後將它作爲資源ID引用,用於我上面的目的?

這是我的完整彈出菜單代碼,展示我的方式動態地生成菜單項:

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(); 

我怎麼能動態生成彈出菜單項資源ID? (aka分配資源ID不帶xml文件)

回答