我有26个图像视图集和26个图像集(命名为... z),我试图通过通用代码逐个为每个图像视图设置一个随机图像。 获得运行时错误。
public class MainActivity extends AppCompatActivity {
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialMethod();
//this method loads the random images to imageview one by one
}
public void initialMethod() {
String temp;
TextView mytextView;
int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
ImageView myImageView;
int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26};
for (i = 0; i < 26; i++) {
myImageView= (ImageView)findViewById(ImageViewIdList[i]);
String ImageName = String.valueOf((char) (randList[i] + 97));
int id = getResources().getIdentifier(ImageName, "id", getPackageName());
myImageView.setImageResource(id);
}
答案 0 :(得分:0)
您输错的一个逗号是&#39;在17到16之间
更改:
int randList[] ={26,25,24,23,22,21,20,19,18,17'16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
为:
int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
答案 1 :(得分:0)
首先 - 始终发布您的错误。您正在尝试将ID加载为图像资源。相反,将您的可绘制ID放在randList中。
还要考虑在代码中动态创建所有这些ImageView,以及其他正确的编码实践(例如代码中没有硬编码值等等,但我敢打赌这是为了学校练习)
int randList[] = { R.drawable.image1, R.drawable.image2, ... }
imageView.setImageDrawable(randList[...]);
答案 2 :(得分:0)
试试这个......
int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
ImageView myImageView;
int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26};
for (int i = 0; i < 26; i++) {
myImageView= (ImageView)findViewById(ImageViewIdList[i]);
String ImageName = String.valueOf((char) (randList[i] + 97));
int id = getResources().getIdentifier(ImageName, "id", getPackageName());
}
答案 3 :(得分:0)
正如“etan”所说 我已经改变了代码 int id = getResources()。getIdentifier(randList [i],“id”,getPackageName());
到
int id = getResources()。getIdentifier(randList [i],“drawable”,getPackageName());
非常感谢etan! :)