Java 如何从SecondActivity调用MainActivity中的非静态方法? 公共类SecondClass扩展了AppCompative活动{ 公共空间随机化{ int[]rndInt=新的int[20]; int[]id=新的int[20]; 字符串[]imgName=新字符串[20]; Random rand=新的Random(); int[]ar1=新int[20]; 对于(inti=1;i
从技术上讲,如果要调用非静态方法,则需要此类的实例Java 如何从SecondActivity调用MainActivity中的非静态方法? 公共类SecondClass扩展了AppCompative活动{ 公共空间随机化{ int[]rndInt=新的int[20]; int[]id=新的int[20]; 字符串[]imgName=新字符串[20]; Random rand=新的Random(); int[]ar1=新int[20]; 对于(inti=1;i,java,android,static,non-static,Java,Android,Static,Non Static,从技术上讲,如果要调用非静态方法,则需要此类的实例 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(); in
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]);}
}
}
在单独的类中使用此方法 将方法更改为static参数并添加一个参数 公共静态void randomizareImagini(上下文) 然后换这条线 id[i]=context.getResources().getIdentifier(imgName[i],“drawable”,context.getPackageName())
公共类分隔类{
公共静态void randomizareImagini(上下文){
int[]rndInt=新的int[20];
int[]id=新的int[20];
字符串[]imgName=新字符串[20];
Random rand=新的Random();
int[]ar1=新int[20];
对于(int i=1;iThing是;在调用intent到MainActivity或创建新实例时,使用非静态重置数据。我能做什么?如果您想在intent指向目标活动时仍将数据保留在目标活动中,则使用静态方法和引用这是一个非常糟糕的主意。使用intent。您需要将MainActivity.list
移动到单独的类…静态变量在Android活动中经常是错误的从不创建新的活动类。这是针对Android特定问题的错误解决方案,仅适用于普通Javaobjects@cricket_007哦,好的。我不知道Android。谢谢你的信息。SecondClass不是一个活动。我像ca的普通类一样使用它L计算东西。所以我可以使用new,对吗?@Paul那么为什么SecondClass扩展AppCompatActivity
?对不起,我不知道那部分是什么,我从MainActivity复制了它。我如何将它调用到我的MainActivity?SeparateClass.randomizareImagini(我应该编写什么参数?);如果你是从MainActivity randomizareImagini调用的(MainActivity.this);如果您是从SecondActivity randomizareImagini(SecondActivity.this)呼叫;
SecondClass instance = new SecondClass();
instance.randomizareImagini();
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]);}
}
}