Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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]);}

    }
}