如何从SecondActivity调用MainActivity中的非静态方法?
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中的非静态方法?
使用此方法在一单独的类
改变方法为静态和参数添加一个参数
公共静态无效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(本)调用此方法;
如何将这个调用到我的MainActivity中? SeparateClass.randomizareImagini(我应该写什么参数?); –
如果您从MainActivity拨打电话 randomizareImagini(MainActivity.this); 如果您从SecondActivity打电话 randomizareImagini(SecondActivity.this); –
它的工作非常好。谢谢! –
从技术上讲,如果你想调用一个非静态方法,你需要这个类的一个实例。
SecondClass instance = new SecondClass();
instance.randomizareImagini();
永远不要创建一个'new' Activity类。这是针对Android特定问题的错误解决方案,只适用于纯Java对象 –
@ cricket_007哦,好吧。我不知道Android。感谢您的信息。 – Marteng
SecondClass不是一项活动。我用普通班级来计算事物。所以我可以使用新的,对吧? –
事情是;当向MainActivity调用意图或创建新实例时,使用非静态重置数据。 – Zoe
我该怎么办? –
如果要将数据保留在目标活动中(甚至当意图指向它时),请使用静态方法和引用 – Zoe