2017-05-21 36 views
0
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()(它必須是非靜態的)。我在哪裏錯了?我能做什麼?如何從SecondActivity調用MainActivity中的非靜態方法?

+0

事情是;當向MainActivity調用意圖或創建新實例時,使用非靜態重置數據。 – Zoe

+0

我該怎麼辦? –

+0

如果要將數據保留在目標活動中(甚至當意圖指向它時),請使用靜態方法和引用 – Zoe

回答

1

使用此方法在一單獨的類

改變方法爲靜態和參數添加一個參數

公共靜態無效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(本)調用此方法;

+0

如何將這個調用到我的MainActivity中? SeparateClass.randomizareImagini(我應該寫什麼參數?); –

+0

如果您從MainActivity撥打電話 randomizareImagini(MainActivity.this); 如果您從SecondActivity打電話 randomizareImagini(SecondActivity.this); –

+1

它的工作非常好。謝謝! –

0

從技術上講,如果你想調用一個非靜態方法,你需要這個類的一個實例。

SecondClass instance = new SecondClass(); 
instance.randomizareImagini(); 
+1

永遠不要創建一個'new' Activity類。這是針對Android特定問題的錯誤解決方案,只適用於純Java對象 –

+0

@ cricket_007哦,好吧。我不知道Android。感謝您的信息。 – Marteng

+0

SecondClass不是一項活動。我用普通班級來計算事物。所以我可以使用新的,對吧? –

相關問題