android中怎么利用java反射機(jī)制動(dòng)態(tài)獲取資源ID,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),巴宜企業(yè)網(wǎng)站建設(shè),巴宜品牌網(wǎng)站建設(shè),網(wǎng)站定制,巴宜網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,巴宜網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
前幾天模仿Mars老師的視頻做了一個(gè)數(shù)獨(dú)游戲。在程序中發(fā)現(xiàn)了一個(gè)問題就是當(dāng)我們的資源很多時(shí),寫起來比較麻煩。然后找了很多方法,比較有用的一個(gè)方法是利用反射機(jī)制來解決。問題看圖:
當(dāng)時(shí)就想:如果有很多控件資源。那么我們不就要去寫很多,比如100個(gè),那我們要寫100個(gè)findViewById()了。所以當(dāng)時(shí)想辦法怎么解決這個(gè)問題。
通過反射解決問題。解決辦法如圖:
private void findViews() { int j = 0 ; //反射機(jī)制,動(dòng)態(tài)獲取控件的資源ID for(int i = 0 ; i < 9 ; i ++) { j = i + 1; try{ Field field = R.id.class.getField(“keypad_”+j); keys[i] = findViewById((Integer)field.getInt(new R.id())); }catch(Exception e){ e.printStackTrace(); } } }
這里注意的是:
(1)、Field導(dǎo)入的包是 java.lang.reflect.Field;
(2)、Field field = R.id.class.getField(“keypad_”+j); 這句里面R.id.class 這里的id可以換成gen目錄下R.java文件中的你要的那個(gè)資源所在的類。比如我要圖片資源 那就是用R.drawable.class 參數(shù)是資源變量名,當(dāng)然這里的變量名要有規(guī)律,能夠循環(huán)得到。
(3)、keys[i] = findViewById((Integer)field.getInt(new R.id())) 這句 得到的就是反射后得到的資源id。
關(guān)于android中怎么利用java反射機(jī)制動(dòng)態(tài)獲取資源ID問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。