2017-05-21 35 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不是一项活动。我用普通班级来计算事物。所以我可以使用新的,对吧? –

相关问题