例如我知道软件包名packageName和一个layout的名字layoutName,怎么通过packageName和layoutName获取这个layout在这个包下R中的id?
-
public static int getId(String packageName, String name) {
- return getResourseIdByName(packageName, "id", name);
- }
- public static int getStringId(String packageName, String name) {
- return getResourseIdByName(packageName, "string", name);
- }
- public static int getDrawableId(String packageName, String name) {
- return getResourseIdByName(packageName, "drawable", name);
- }
- public static int getLayoutId(String packageName, String name) {
- return getResourseIdByName(packageName, "layout", name);
- }
- public static int getResourseIdByName(String packageName, String className, String name) {
- int id = 0;
- try {
- Class desireClass = Class.forName(packageName + ".R$" + className);
- if (desireClass != null)
- id = desireClass.getField(name).getInt(desireClass);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- return id;
- }