![](/img/trans.png)
[英]How do I call a non-static method from another class in a non-static method? (java)
[英]How to call a non-static method in MainActivity from SecondActivity?
public class SecondClass extends AppCompatActivity{
public void randomizareImagini(){
int[] rndInt = new int[20];
int[] id= new int[20];
String[] imgName = new String[20];
Random rand = new Random();
int[] ar1 = new int[20];
for (int i=1; i<16;i++){
ar1[i] = rand.nextInt(3) + 1;
rndInt[i]=ar1[i];
imgName[i]="img"+rndInt[i];
id[i] = getResources().getIdentifier(imgName[i], "drawable", getPackageName());
}
for (int i=0;i<15;i++){MainActivity.list.get(i).setImageResource(id[i+1]);}
}
}
如何將這種方法調用到MainActivity中(我找不到它,因為它是非靜態的)? 如果我將其設為靜態,則其中的代碼將無法正常使用getResources()(必須為非靜態)。我在哪里錯? 我能做什么?
在單獨的類中使用此方法
將方法更改為靜態並添加參數
公共靜態無效值randomizareImagini(上下文上下文)
之后,更改此行
id [i] = context.getResources()。getIdentifier(imgName [i],“ drawable”,context.getPackageName());
public class SeparateClass {
public static void randomizareImagini(Context context){
int[] rndInt = new int[20];
int[] id= new int[20];
String[] imgName = new String[20];
Random rand = new Random();
int[] ar1 = new int[20];
for (int i=1; i<16;i++){
ar1[i] = rand.nextInt(3) + 1;
rndInt[i]=ar1[i];
imgName[i]="img"+rndInt[i];
id[i] = context.getResources().getIdentifier(imgName[i], "drawable", context.getPackageName());
}
for (int i=0;i<15;i++){
MainActivity.list.get(i).setImageResource(id[i+1]);}
}
}
您可以使用調用此方法
SeparateClass.randomizareImagini(this);
從技術上講,如果要調用非靜態方法,則需要此類的實例。
SecondClass instance = new SecondClass();
instance.randomizareImagini();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.