2017-05-21 11 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() (그것은 비 정적이어야합니다) Caus 작동하지 않습니다. 내가 잘못 했나요? 내가 무엇을 할 수 있을지?SecondActivity에서 MainActivity의 비 정적 메서드를 호출하는 방법은 무엇입니까?

+0

; 비 정적 (non-static)을 사용하면 인 텐트가 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 오케이. 나는 안드로이드에 대해 잘 모른다. 정보 주셔서 감사. – Marteng

+0

SecondClass는 활동이 아닙니다. 저는 물건을 계산할 때 보통의 클래스처럼 사용합니다. 그래서 나는 새로운 것을 사용할 수 있습니까? –