Android:为弹出菜单项动态分配资源id

Android:为弹出菜单项动态分配资源id,android,xml,menu,popup,Android,Xml,Menu,Popup,谈到这个问题,我想知道为动态创建的弹出菜单项创建资源ID的可行性 一点背景:我的弹出菜单包含一个“创建新文件”项,另外还有一个在给定目录中找到的每个文件的项。问题;由于启动应用程序时我不知道目录中存在多少文件,因此我无法在xml文件中硬编码这些菜单项,因此它们没有资源ID。我需要为弹出菜单中的项目分配资源id,以便我可以从单个项目的资源id创建视图变量,即: View menuItemView = getActivity().getWindow().getDecorView().findView

谈到这个问题,我想知道为动态创建的弹出菜单项创建资源ID的可行性

一点背景:我的弹出菜单包含一个“创建新文件”项,另外还有一个在给定目录中找到的每个文件的项。问题;由于启动应用程序时我不知道目录中存在多少文件,因此我无法在xml文件中硬编码这些菜单项,因此它们没有资源ID。我需要为弹出菜单中的项目分配资源id,以便我可以从单个项目的资源id创建视图变量,即:

View menuItemView = getActivity().getWindow().getDecorView().findViewById(R.id.item_id);
getMenu().add()的重载版本接受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(); 
popup.setOnMenuItemClickListener(新的PopupMenu.OnMenuItemClickListener(){
@凌驾
公共布尔onMenuItemClick(菜单项){
开关(item.getItemId()){
案例R.id.新轨道:
trackSelectButton.setText(“…”);
Toast.makeText(getActivity(),“命名新曲目”,Toast.LENGTH_SHORT).show();
txtTrackName.setVisibility(txtTrackName.VISIBLE);
返回true;
违约:
selectedTrackName=(item.getTitle().toString());
trackSelectButton.setText(selectedTrackName);
对于(int i=0;i
如何为弹出菜单项动态生成资源ID?(即在没有xml文件的情况下分配资源ID)

您考虑过吗?和