2017-10-21 39 views
0

我有一個應用程序,可在活動打開時創建隨機圖像。隨機圖像陣列中有30張圖像。生成圖像,但我想要的是將可繪製的名稱寫入文本視圖。它看起來像這樣:如何從imageView獲取可繪製名稱

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/from字符串,並將字符串轉換爲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。謝謝!

回答

1

更改代碼的轉換你的int ID添加到String名使用方法

getResourceEntryName(int id); 

更改行:

writeID.setText(String.valueOf(generator())); 

喜歡的東西:

writeID.setText(getResources().getResourceEntryName(generator())); 

而對於反之亦然:

如果你有一個String讓我們假設這個String你從一個TextView獲取或使用上述方法將其轉換回int ID您執行以下操作:

int id= getResources().getIdentifier("your_string_here", "drawable", getPackageName()); 

如果您撥打的電話號碼是Fragment而不是Activity,請在致電getResources()之前或致電getPackageName()之前記得撥打getActivity()。 我在輸入時沒有測試過代碼,但我確信它可以工作(可能是錯字)以獲取更多信息,請參閱參考資料from this official link上的文檔。

+0

非常感謝! – 6Geri6

+0

不客氣! **快樂編碼!** – Xenolion

0

如果我理解正確,你需要的是看看getResourceName(int)方法 - 它通過它的id返回資源名稱。您也可以使用getIdentifier(String,String,String)方法通過名稱檢索資源ID。

如果要顯示隨機選取的圖像的名稱,應該將生成的資源ID保存到變量中並獲取相應的資源名稱,而不是調用generator()方法兩次,因爲您會得到兩個不同的ID。