如何随机设置ImageButton?

问题描述:

我有150张图片,我可以如何将它们中的一个设置为ImageButton,具体取决于随机生成的ID? [代码更新】 我开始这样的:如何随机设置ImageButton?

int x, y, z,resID; 
String sID; 
Random rand; 
ImageButton SButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play_); 
    rand = new Random(System.currentTimeMillis()); 
    SButton = new ImageButton(this); 
    SButton.setVisibility(View.VISIBLE); 
} 

public void Start(View view) { 
    SButton = (ImageButton) view; 
    x = rand.nextInt(3); 
    y = rand.nextInt(8); 
    z = rand.nextInt(10); 
    sID = "shape_" + x + y + z; 
    resID =getResources().getIdentifier(sID,"drawable","com.packagename"); 
    SButton.setImageResource(resID); 
} 

与为我工作的代码更新

+0

所有图片都有自己的ID,这就是他们的名字:'R.drawable.image1','R.drawable.image2'等。为什么你需要他们有随机ID? – JonZarate

+0

正如我所说我是新来的Android,对不起... [更新了问题]我有我的随机选择的ID如何设置图像按钮完全一样随机生成的ID? @JonZarate –

+0

你想用ImageButton的随机ID做什么? – tash

您可以通过下面的代码做到这一点:

int resource = getResources().getIdentifier(myID, "drawable", "com.your.package"); 

PS:取从名称中删除“R.id.”。

+0

我已更新我的代码,谢谢@Atabtab Hussain –

+0

它工作了weel,但它给出了这个错误** getSlotFromBufferLocked:未知的缓冲区错误** @Aftab Hussain –

+0

显然,这是Marshmellow的一个公开问题。看看'Itai Hanski'的回答在 http://stackoverflow.com/questions/32561479/android-studio-getslotfrombufferlocked-unknown-buffer-error –

  1. 重命名像image1,image2,...,image150的yuor图像。

  2. 生成在1 150之间(包括两端)的随机数。下面的代码

  3. 用它来获得图像资源ID。 (使用“纹理贴图”,而不是“绘制”如果你放在纹理贴图文件夹中的图片)

    String myID = "image"+ generatedRandomNumber; 
    int resource = getResources().getIdentifier(myID, "drawable", "com.your.package"); 
    
  4. 使用该资源ID来设置图像ImageButton