簡體   English   中英

如何從imageView獲取可繪制名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM