2017-09-19 77 views
1

我試圖創建一個數組,然後生成上ImageView的隨機圖像上ImageView的隨機圖像,但我的代碼有問題... setBackgroundResource生成錯誤和消息的Android工作室Cannot resolve method 'setBackgroundResource(int)'我的代碼是:生成與陣列

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

回答

1

由於您正在訪問在不同的上下文陣列,則應拔出類型數組的數據到一個列表(或陣列)並將其存儲作爲成員變量。

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