[英]How to get drawable name from imageView
我有一個在活動打開時創建隨機圖像的應用程序。 隨機圖像陣列中大約有30張圖像。 圖像已生成,但是我想要的是將可繪制名稱寫入textview。 看起來像這樣:
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轉換為字符串,或者如何使用生成器生成字符串,在textview中顯示,然后將其轉換為int以在imageview中顯示。
我創建了另一個活動,可以在微調器中選擇要查看的圖像,只需將帶有字符串的選定選項發送到按下按鈕時的下一個活動,在另一個活動中,我就刪除了.png和res / drawable /從字符串中,然后將字符串轉換為int以顯示圖像。
Bundle extras = getIntent().getExtras();
String transportItemChosen = extras.getString("SpinnerValue");
transportItemChosen = transportItemChosen.replace(".png", "");
transportItemChosen = transportItemChosen.replace("res/drawable/", "");
String uri = ("@drawable/" + transportItemChosen);
int id = getResources().getIdentifier(uri, null, getPackageName());
ImageView mImageView;
mImageView = (ImageView) findViewById(R.id.selectedimage);
mImageView.setImageResource(id);
因此,我需要生成器將其生成為字符串,然后將其轉換為int。 謝謝!
通過使用方法將int
id轉換為String
名稱來更改代碼
getResourceEntryName(int id);
更改行:
writeID.setText(String.valueOf(generator()));
對於:
writeID.setText(getResources().getResourceEntryName(generator()));
對於Viceversa:
如果您有一個String
,則假設您從textView獲得此String
或使用上述方法將其轉換回int
id,請執行以下操作:
int id= getResources().getIdentifier("your_string_here", "drawable", getPackageName());
而且,如果您是從Fragment
而不是Activity
調用代碼,請記住在調用getResources()
或調用getPackageName()
之前將getActivity()
放進去。 我在輸入代碼時尚未測試代碼,但是我確信它可以工作(可能是拼寫錯誤),以獲取更多信息,請考慮從此官方鏈接查看“資源文檔”。
如果我理解正確,那么您需要看一下getResourceName(int)方法-它通過ID返回資源名稱。 您也可以使用getIdentifier(String,String,String)方法按名稱檢索資源ID。
如果要顯示隨機選擇的圖像的名稱,則應將生成的資源ID保存到變量中並為其獲取相應的資源名稱,而不是兩次調用generator()
方法,因為這將獲得兩個不同的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.