我試圖通過使用for循環來初始化我想要的屏幕上的所有精靈節省時間。我的可繪製文件夾上有幾張圖片。所以我相應地重新命名了它們。我想連接i
到表達式,然後必須以某種方式調用/調用它! 起初,我想過這樣做:如何使一個字符串'invokable'然後將其轉換爲整數(Android)
Integer.parseInt("R.drawable.scoredisplay" + i)
然後,當然你不能解析到一個整數,也是表達式的結果反正返回一個整數。如何將表達式與i
並置,然後調用它?可能嗎?
我試圖通過使用for循環來初始化我想要的屏幕上的所有精靈節省時間。我的可繪製文件夾上有幾張圖片。所以我相應地重新命名了它們。我想連接i
到表達式,然後必須以某種方式調用/調用它! 起初,我想過這樣做:如何使一個字符串'invokable'然後將其轉換爲整數(Android)
Integer.parseInt("R.drawable.scoredisplay" + i)
然後,當然你不能解析到一個整數,也是表達式的結果反正返回一個整數。如何將表達式與i
並置,然後調用它?可能嗎?
這是可能的,你需要做到以下幾點:
Context x = getApplicationContext();
int myId = x.getResources().getIdentifier("R.drawable.scoredisplay" + i, "drawable",x.getPackageName());
當第一個參數是ID爲的View
你想要得到的,第二個是資源在這種情況下,鍵入「String
drawable「,第三個是我們從上下文中獲得的包名稱,調用getPackageName()
方法。 然後之後你可以用下面的代碼視圖:
View myView = findViewById(myId);
字符串轉換成一整數,你在想是沒有意義的,因爲ID不是字符串(儘管它有一個解決辦法像我向你展示)。
更新
由於您使用的是Activity
類以外的代碼到Context
方法的調用是無效的。您需要創建一種從活動外部訪問活動上下文的方式(您提到從您的類中調用.getContext()
,但這將獲得該類上下文,而不是活動)。實現這一目標將修改你的構造函數的方式,可以說你有一個名爲myClass
類:
class myClass{
//Declase a Context variable inside your class
Context x;
//You implement a constructor for this class that accepts a Context as
//a parameter (feel free to add more if you are using a constructor already)
public myClass(Context applicationContext){
//Assign the passed value to your local Context
x = applicationContext;
}
//Afterwards, on a different part of your class, you could invoke activity
//related methods by using the Context you have 'x'
public void otherMethod(){
int myId = x.getResources().getIdentifier("R.drawable.scoredisplay" + i, "drawable",x.getPackageName());
}
}
確保您從Activity
正確地傳遞你的價值,你應該會看到類似這樣的地方的東西最後一部分在你的代碼:
myClass i = new myClass();
因爲我們現在有一個構造函數,或者已經修改了現有的一個,您可以添加到this
活動場景傳遞到您的權利遊戲或任何類的創建:
myClass i = new myClass(this);//'this' can be 'getApplicationContext()'