现在的位置: 首页 > 综合 > 正文

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

2019年05月19日 ⁄ 综合 ⁄ 共 1167字 ⁄ 字号 评论关闭

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

  1. public static
    int getId(String packageName,
    String name)
    { 

  2. return getResourseIdByName(packageName,
    "id", name); 
  3. } 
  4.     public
    static int getStringId(String packageName,
    String name)
    { 
  5.         return getResourseIdByName(packageName,
    "string", name); 
  6.     } 
  7.  
  8.     public
    static int getDrawableId(String packageName,
    String name)
    { 
  9.         return getResourseIdByName(packageName,
    "drawable", name); 
  10.     } 
  11.  
  12.     public
    static int getLayoutId(String packageName,
    String name)
    { 
  13.         return getResourseIdByName(packageName,
    "layout", name); 
  14.     } 
  15.  
  16.     public
    static 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.     }

 

抱歉!评论已关闭.