2016-06-10 1 views
2

here 질문에 감동하여 동적으로 생성 된 팝업 메뉴 항목에 대한 리소스 ID를 만들 가능성을 알고 싶습니다.Android : 동적으로 팝업 메뉴 항목의 리소스 ID 할당

약간의 배경 : 내 팝업 메뉴에는 특정 디렉토리에서 찾은 모든 파일에 대한 항목 외에도 "새 파일 만들기"항목이 포함되어 있습니다. 문제. 응용 프로그램이 시작될 때 얼마나 많은 파일이 디렉토리에 있는지 모르기 때문에 xml 파일에 이러한 메뉴 항목을 하드 코딩 할 수 없으므로 리소스 ID가 없습니다. .

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

I see이 getMenu의 한 오버로드 버전() (추가)를 받아들이는 : 나는 개별 항목의 리소스 ID에서보기 변수를 만들 수 있도록 나는 나의 팝업 메뉴의 항목에 대한 리소스 ID를 할당 즉, 필요 itemID를 매개 변수로 사용합니다. 이 매개 변수를 런타임 중에 int로 설정 한 다음 나중에 위의 목적을 위해 리소스 ID로 참조 할 수 있습니까?

이 내 완료 팝업 메뉴 코드, 전시 I 동적 메뉴 항목을 생성하는 방법 :

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를 생성 할 수 있습니까? (일명 xml 파일없이 자원 ID 할당)

답변