2017-05-21 15 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'アクティビティクラスを決して作成しないでください。これは、Android固有の問題では間違った解決策であり、プレーンなJavaオブジェクトに対してのみ正しいです。 –

+0

@ cricket_007ああ大丈夫です。私はAndroidについて全く知らない。情報ありがとう。 – Marteng

+0

SecondClassはアクティビティではありません。私は物事を計算するための通常のクラスのように使用します。だから私は新しい、右を使用することができますか? –

関連する問題