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文件)