Android getIdentifier无法获取资源的id
我使用getIdentifier按名称获取原始资源的id。但它不起作用,我肯定会正确使用它。有什么我遗漏的吗 我已经验证了原始资源存在于我给它的字符串下。我还清理了项目,以确保R.java是正确的Android getIdentifier无法获取资源的id,android,Android,我使用getIdentifier按名称获取原始资源的id。但它不起作用,我肯定会正确使用它。有什么我遗漏的吗 我已经验证了原始资源存在于我给它的字符串下。我还清理了项目,以确保R.java是正确的 id = ctx.getResources().getIdentifier("file_name", null , ctx.getPackageName()); 看起来这些方法需要type/(或defType)参数。根据资源目录,应该类似于drawable或layout 可以将其包含在第一个字符串参
id = ctx.getResources().getIdentifier("file_name", null , ctx.getPackageName());
看起来这些方法需要
type/
(或defType
)参数。根据资源目录,应该类似于drawable
或layout
可以将其包含在第一个字符串参数中:
id = ctx.getResources().getIdentifier("drawable/file_name", null , ctx.getPackageName());
id = ctx.getResources().getIdentifier("file_name", "drawable", ctx.getPackageName());
或将其作为第二个参数传递:
id = ctx.getResources().getIdentifier("drawable/file_name", null , ctx.getPackageName());
id = ctx.getResources().getIdentifier("file_name", "drawable", ctx.getPackageName());
另外,请确保从您传递的文件名中排除文件扩展名。如果方法仍然返回
0
,请检查file\u name
是否对应于R.java
文件中的某个id。太晚了,但我认为这个问题与不正确的应用程序id有关
它在应用程序的module build.gradle文件中配置:
android{
defaultConfig {
applicationId "your application id goes here"
从我观察到的情况来看,生成的R文件的packageName似乎基于Manifest.xml文件中packageName的值。但是,context.GetPackageName似乎正在返回配置的applicationId的值。如果它们是一样的,那么就没有问题了。如果它们与对资源的调用不同,则.getIdentifier(…,…,ctx.getPackageName())将无法找到标识符
我不确定上述段落是否完全正确。我实际观察到的是,如果我更改applicationId以匹配Manifest.xml文件中PackageName的名称,那么使用GetIdentifier方法无法获取资源标识符的问题就消失了。我不得不承认,我对自己的问题得到纠正感到有些惊讶。我两种方法都试过了。我尝试将第二个参数中提供的raw目录设置为“raw”。如果我的
R.java
中没有文件名,因为我正在动态构建,我该怎么办?我得到了路径和File imgFile=new文件(arrListspotpics.get(0))代码>