我有一个应用程序,可在活动打开时创建随机图像。随机图像阵列中有30个图像。生成图像,但我想要的是将可绘制的名称写入textview。它看起来像这样:
<script src="js/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>
目前我收到数字,我无法弄清楚如何将int转换为字符串,或者如何使用生成器生成字符串,在textview中显示然后将其转换为int以在ImageView的。
我创建了另一个活动,我可以在其中选择我想要从微调器中看到的图像,它只是将带有字符串的选定选项发送到按下按钮时的下一个活动,而在另一个活动中我删除.png和res / drawable / from the string,并将字符串转换为int以显示图像。
ImageView RImage= (ImageView) findViewById(R.id.image);
RImage.setImageResource(generator());
Drawable myDrawable = RImage.getDrawable();
TextView writeID = (TextView) findViewById(R.id.idtext);
writeID.setText(String.valueOf(generator()));
}
private int generator() {
TypedArray imgs = getResources().obtainTypedArray(R.array.list3);
int imgid = imgs.getResourceId(new Random().nextInt(imgs.length()), -1);
imgs.recycle();
return imgid;
}
所以我需要生成器生成字符串然后将其转换为int。谢谢!
答案 0 :(得分:1)
通过使用方法
将int
ID转换为String
名称来更改代码
getResourceEntryName(int id);
更改行
writeID.setText(String.valueOf(generator()));
类似于:
writeID.setText(getResources().getResourceEntryName(generator()));
对于Viceversa:
如果你有一个String
让我们假设这个String
你从textView获得或使用上面的方法将它转换回int
id你会做以下事情:
int id= getResources().getIdentifier("your_string_here", "drawable", getPackageName());
如果您要调用Fragment
而不是Activity
的代码,请记得在致电getActivity()
之前或致电getResources()
之前放置getPackageName()
。
我没有在输入时测试代码,但我相信它会起作用(可能是一个错字),有关更多信息,请考虑参阅资源上的文档from this official link。
答案 1 :(得分:0)
如果我理解正确,你需要的是看看getResourceName(int)方法 - 它通过id返回资源名称。您还可以使用getIdentifier(String,String,String)方法按名称检索资源ID。
如果要显示随机选择的图像的名称,您应该将生成的资源ID保存到变量中并获取相应的资源名称,而不是两次调用const int n = 1000;
int dayarray[n];
int montharray[n];
int yeararray[n];
for (int k = 2016; k < 2018; k++) { // for loop for years 2016 to 2017
for (int j = 1; j < 13; j++) { // for loop for month
for (int i = 1; i < 32; i++) { // for loop for day
dayarray[??] = i;
montharray[??] = j;
yeararray[??] = k;
}
}
}
方法,因为您将获得两个不同的ids。