簡體   English   中英

如何從SecondActivity調用MainActivity中的非靜態方法?

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

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