我想通过名字得到照片的身份证明
someId = "hd_2"
Resources.getSystem().getIdentifier(someId, "drawable", getPackageName());
public static final class drawable {
...
public static final int hd_2=0x7f020088;
...
}
为什么它可能会返回java.lang.IllegalArgumentException:无效的方法?
更新
我将Resources.getSystem().getIdentifier
从onCreate移到onStart,现在它返回0.
答案 0 :(得分:1)
来自Resources.getSystem()
上的documentation:
返回一个全局共享资源对象,该对象仅提供对系统资源的访问权限(无应用程序资源),并且未针对当前屏幕进行配置(不能使用维度单位,不会根据方向更改等)。
您正在查找错误的Resources
对象。您需要从当前Context
获取实例。类似的东西:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources();
int resId = res.getIdentifier(someId, "drawable", getPackageName());
}
答案 1 :(得分:0)
也许这可以帮到你:https://stackoverflow.com/a/15488321/3633665
int resId=YourActivity.this.getResources().getIdentifier("res_name", "drawable", YourActivity.this.getPackageName());