0

我成功地在一个新项目中使用了这个代码,但是,当在我的实际代码中复制它时,显示的图像不是很好,一切都做得很好(图像在可绘制的文件夹中,每个数据都声明得很好,......)图像以“phoXX”开头,其中 XX 是一个整数(介于 0 和 62 之间) R.java ...)

这是我的代码:

private Context mContext;
ImageView  imageC=(ImageView)findViewById(R.id.imageView1);
TextView  Tex=(TextView)findViewById(R.id.textView1);       
Drawable drawableX = this.getResources().getDrawable(android.R.drawable.ic_dialog_alert);
Random random_monster = new Random();
int lerand = random_monster.nextInt(62);
int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName());
if (id>0)
{
    drawableX = getResources().getDrawable(id);
}
imageC.setImageDrawable(drawableX);
Tex.setText(Integer.toString(lerand)+":"+id);

因此,正如我所说,显示图像,显示数字,但 pho29 例如显示名为 pho48 的图像(如果您询问,pho48 不显示 pho29)ID 为 2130837535,即出现在 R.java 中:公共静态最终 int pho29=0x7f02001f; pho48 是:
公共静态最终 int pho48=0x7f020034;

对于某些数字,显示的图像是好的图像,对于其他数字,图像不是好的图像(并且对于相同的数字始终显示相同的图像....我的意思是对于 pho29,总是显示 pho48,在我的每一项活动中)

我真的不明白我想念什么......谢谢大家的帮助

编辑:在一些匹配的下方(左侧应显示的数字,右侧显示的数字)

2->6
17->32
19->34
24->41
43->43
51->51
36->55
37->56
38->57
56->56
59->59
61->61

如您所见,56 显示为 56 AND 37....

4

2 回答 2

1

如果相同的代码和一组图像资源在一个项目中运行良好,而在另一个项目中运行良好,则应考虑损坏项目中的编译资源是否实际上正确。我发现在 Eclipse 中使用自动构建功能时,资源不会在我期望的时候重新编译。例如,如果我在部署应用程序之前做的最后一件事是更改资源。保存代码文件更改似乎会使构建系统更加困难。

您应该尝试先进行清洁,然后再进行重建。在 Eclipse 中,在 Project 菜单上选择“Clean...”并选择您的项目(或让它全部清除)。然后 Eclipse 将进行完全重建。或者在命令行上运行“ant clean”,然后运行“ant debug”。

你也在使用这条线:

int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName());

这是 API 规范:

public int getIdentifier (String name, String defType, String defPackage)

您不需要在 name 字段中指定类型,因为您在 defType 字段中指定了它。我认为它不会解决您的问题,但这至少也应该有效:

int id = mContext.getResources().getIdentifier("pho"+lerand, "drawable",mContext.getPackageName());
于 2012-11-03T21:20:18.073 回答
0

尝试将没有源的图像视图放在其定义中,有时我会在图像视图在 xml 中设置源时遇到问题,在运行时更改其可绘制对象不起作用,第一张图像始终可见

于 2012-11-03T21:15:26.037 回答