2011-05-02 111 views
1

我想用随机图像制作视图。我有代码,没有错误,但当我点击按钮去随机图像,它只是保持不变。Android中的随机图像?

我的来源是:

private static final Random rgenerator = new Random(); 

private static final Integer[] mImageIds = 
    { R.drawable.img2, R.drawable.img1, R.drawable.img3, }; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    ImageView iv = (ImageView) findViewById(R.id.imageviewyeah); 
    iv.setTag(q); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(this); 
} 

public void onClick(View v) 
{ 
    switch (v.getId()) 
    { 
     case R.id.next_image_button: 
      Intent i = new Intent(this, RandomImage.class); 
      startActivity(i); 
      break; 
    } 
} 

回答

1

参考只要保持你的ImageView并调用setImageResource(int id)与随机的资源之一。你并不需要启动一个新的Activity检索随机资源ID ...

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    final ImageView iv = (ImageView) findViewById(R.id.imageviewyeah); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View V) { 
       int resource = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
       iv.setImageResource(resource); 
     } 
    }); 
} 
+0

对不起,我不擅长这个。我能举个例子吗? – Christian 2011-05-02 19:26:07

+0

已编辑。这就是你需要的。更正:您需要阅读更多关于您试图编程的平台。 – LeffelMania 2011-05-02 19:29:55

+0

谢谢伟大的作品。 – Christian 2011-05-02 19:32:26

0

我会改变一些事情。

private static final Random rgenerator = new Random(); 
private ImageView iv; 

private static final Integer[] mImageIds = 
    { R.drawable.img2, R.drawable.img1, R.drawable.img3, }; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    iv = (ImageView) findViewById(R.id.imageviewyeah); 
    changeImageResource(); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      changeImageResource(); 
     } 
    }); 
} 

public void changeImageResource() 
{ 
    int i = regeneratos.nextInt(3); 
    iv.setImageResource(mImageIds[i]); 
} 

希望这会有所帮助。

+0

您是否真的希望这有助于任何不仅仅是复制粘贴和运行代码的人?一个简短的描述或一些意见可以帮助,代码部分应该是概念的解释/证明。 – rekaszeru 2011-05-02 19:41:10

+0

你说得对,我很抱歉,那是早上3点我写的。我正在做的是通过运行一种新的方法来改变按钮的onClick方法中的图像,该方法将图像改变为随机图像。没有必要为此使用意图。 – 2011-05-03 15:36:08