2017-09-19 5 views
1

Ich versuche ein Array erstellen dann ein zufälliges Bild auf ImageView generieren, aber mein Code hat ein Problem ... setBackgroundResource generiert einen Fehler und die Nachricht Android Studio ist Cannot resolve method 'setBackgroundResource(int)' Mein Code ist:Generate zufällig Bilder auf ImageView mit Array

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button btn=(Button)findViewById(R.id.btn); 
    final RelativeLayout background = (RelativeLayout) findViewById(R.id.back); 
    Resources res = getResources(); 
    final TypedArray myImages = res.obtainTypedArray(R.array.myImages); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Random random = new Random(); 
      int randomInt = random.nextInt(myImages.length()); 
      int drawableID = myImages.getResourceId(randomInt, -1); 
      background.setBackgroundResource(drawableID); 
     } 
    }); 
} 

Antwort

1

da Sie das Array in einem anderen Kontext sind zugreifen, sollten Sie die Daten aus typisierten Array in eine Liste (oder ein Array) ziehen und speichern Sie es als eine Membervariable.

private List<Integer> myImages; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button btn=(Button)findViewById(R.id.btn); 
    final RelativeLayout background = (RelativeLayout) findViewById(R.id.back); 
    myImages = getResourceList(R.array.myImages); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Random random = new Random(); 
      int randomInt = random.nextInt(myImages.size()); 
      int drawableID = myImages.get(randomInt); 
      background.setBackgroundResource(drawableID); 
     } 
    }); 
} 

public List<Integer> getResourceList(int arrayId){ 
    TypedArray ta = getResources().obtainTypedArray(arrayId); 
    int n = ta.length(); 
    List<Integer> resourceList = new ArrayList<>(); 
    for (int i = 0; i < n; i++) { 
     int id = ta.getResourceId(i, 0); 
     resourceList.add(id); 
    } 
    ta.recycle(); 

    return resourceList; 
}