看板 AndroidDev 關於我們 聯絡資訊
就我知道的內容,討論一下,希望能拋磚引玉, 若有謬誤及不足,也請用力指正:) ※ 引述《narwhalgary (獨角鯨葛瑞)》之銘言: : 回來PO一下昨天的發現 : 一開始想用drawable作為條件, : Drawable swordD = getResources().getDrawable(R.drawable.sword); : //只能用在activity,自定義class不行,不知為何 getResources() 是 android.content.Context 的一個 function, Activity 繼承 Context,所以 Activity 可以使用 getResources(), 自定義的 class 沒有繼承 Context,所以當然無法使用。 : imageUsing.getDrawable().equals(swordD);//原本想用這樣做比較,但是怎樣都無法 : true : 後來發現drawable不知為何每次執行後用TextView顯示出來總是變來變去, : 不適合拿來當作if-else的條件 getDrawable() 出來是 Drawable 的物件,用 TextView 顯示出來, 應該是呼叫了 toString() ,如果沒有複寫(override) toString(),則顯示的會是 物件名稱+物件的 hashcode。每次產生新的物件,當然 hashcode 都不一樣。 : 適合做為條件的恐怕只有R.drawable.XXX, : 用TextView顯示出來為res/drawable/XXX.png : 或是把上者用toString轉型 : private Integer[] mImageIds = { R.drawable.magic, R.drawable.sword, : R.drawable.arrow }; : text4.setText(mImageIds[0].toString()); : 顯示出來的是一個固定的數字,似乎也可以當作條件 R.drawable.xxx 甚至是其他 R.layout.xxx,R.xxxx.xxx 其實都是 int 可以看 gen/package.name/R.java : 至於兩張圖片的resource竟然會一模一樣,而且不會變, : text2.setText(imageUsing.getResources().toString()); : text3.setText(image00.getResources().toString()); 這個部份猜測是因為取出來的 Resources,是整個程式的 Resources,所以會一樣。 (沒有寫程式測試過,無法確認) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.216.235