如何通过资源文件名找该资源在R中的id

来源:互联网 发布:axure中文破解版 mac 编辑:程序博客网 时间:2024/05/01 09:02

例如我知道软件包名packageName和一个layout的名字layoutName,怎么通过packageName和layoutName获取这个layout在这个包下R中的id?

  1. public staticint getId(String packageName,String name){ 

  2. return getResourseIdByName(packageName,"id", name); 
  3. } 
  4.     publicstatic int getStringId(String packageName,String name){ 
  5.         return getResourseIdByName(packageName,"string", name); 
  6.     } 
  7.  
  8.     publicstatic int getDrawableId(String packageName,String name){ 
  9.         return getResourseIdByName(packageName,"drawable", name); 
  10.     } 
  11.  
  12.     publicstatic int getLayoutId(String packageName,String name){ 
  13.         return getResourseIdByName(packageName,"layout", name); 
  14.     } 
  15.  
  16.     publicstatic int getResourseIdByName(String packageName,String className,String name){ 
  17.         int id= 0; 
  18.         try{ 
  19.             Class desireClass= Class.forName(packageName+ ".R$"+ className); 
  20.             if(desireClass !=null) 
  21.                 id = desireClass.getField(name).getInt(desireClass); 
  22.         }catch (ClassNotFoundException e){ 
  23.             e.printStackTrace(); 
  24.         }catch (IllegalArgumentException e){ 
  25.             e.printStackTrace(); 
  26.         }catch (SecurityException e){ 
  27.             e.printStackTrace(); 
  28.         }catch (IllegalAccessException e){ 
  29.             e.printStackTrace(); 
  30.         }catch (NoSuchFieldException e){ 
  31.             e.printStackTrace(); 
  32.         } 
  33.  
  34.         return id; 
  35.     }

 

原创粉丝点击