在问这个问题之前,我已经经历了所有的环节,仍然无法解决问题。
我有一个包含自定义列表视图的片段,我正试图从字符串中动态获取imageView中的图像(针对每个列表项)。(字符串是从数据库中生成的,字符串的名称与drawable.*文件夹中的图像名称匹配)
在所有可能的方法中,我只得到emageResouse int值为0。我已经完全检查过了,图像名称(在可绘制的文件夹中)与生成的字符串匹配。
以下是代码:--
int imageResource = getActivity().getResources().getIdentifier("android.banking:drawable/" + bank.getImageName(), null, null);
Log.d("BankListFragment", getContext().getPackageName() +" "+imageResource +" "+bank.getImageName());
image.setImageResource(imageResource);
int imgResource = res.getIdentifier(bank.getImageName(), "drawable", getContext().getPackageName() );
Log.d("BankListFragment", getContext().getPackageName() +" "+imgResource +" "+bank.getImageName());
如果我试图用src="@drawable/image1"对布局文件中的图像名称进行硬编码,它就可以了。同样,如果我使用以下代码,它也会起作用——
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.image1);
image.setImageDrawable(drawable);
有人面临类似的问题吗?
编辑::-这里是logcat输出:-打印正确的图像名称,可绘制文件夹中有所有这些文件。
09-01 15:47:34.051 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image1.jpg
09-01 15:47:34.051 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image2.jpg
09-01 15:47:34.061 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image3.jpg
09-01 15:47:34.061 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image4.jpg
09-01 15:47:34.061 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image5.jpg
09-01 15:47:34.061 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image6.jpg
09-01 15:47:34.061 17620-17620/android.banking D/BankListFragment﹕ android.banking 0 image7.jpg
我遇到了类似的问题,对我有效的是没有扩展的字符串。
您正在生成的字符串不应包含扩展名。
您在Drawable代码中访问的方式没有扩展,我认为您需要修改图像名称生成String的逻辑。
希望这能有所帮助。
试试这个-
int resourceId = getActivity().getResources().getIdentifier(bank.getImageName(),"drawable",getActivity().getPackageName());