2012-07-09 169 views
0

我试图在单击按钮时更改图像。在目前的学习曲线中,无法确定其失败的原因。在按钮上更改imageview点击android

这里是我的代码:

public class Main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    Button changeMebtn = (Button) findViewById(R.id.changeMe); 

    changeMebtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      ImageView image = (ImageView) findViewById(R.drawable.amsterdam); 
      image.setImageResource(R.drawable.lima); 
     } 
    }); 


} 

}

XML:

<ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/amsterdam" /> 

    <Button 
     android:id="@+id/changeMe" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Change Me" 
     android:layout_gravity="center"/> 

当我按一下按钮我目前得到一个一般性错误。

有人可以告诉我我在做什么错在这里...?

谢谢。

回答

11

使用

ImageView image = (ImageView) findViewById(R.id.imageView1); 
      image.setImageResource(R.drawable.lima); 

,而不是

ImageView image = (ImageView) findViewById(R.drawable.amsterdam); 
      image.setImageResource(R.drawable.lima); 

,因为你的图片ID是imageView1在XML中没有阿姆斯特丹

和第二点使用的R.id.imageView1代替R.drawable.amsterdam

+0

@LalitPoptani:先生,我已经提到了两行代码,它清除了当前代码中的问题,因为他在'findViewById而不是'ImageView'中传递了一个可绘制的id,这意味着他正在施放一个'Drawable '到'ImageView'。 – 2012-07-09 10:31:24

+0

谢谢你的工作。我知道由于不使用'imageView1'而丢失了一些东西。只是未能内化... – greenpool 2012-07-09 10:32:56

+0

此解决方案仅适用于哪些应用程序具有R.drawable.amsterdam的单个实例。 – Kramer 2017-10-05 14:29:59

4

用途:

ImageView image = (ImageView) findViewById(R.id.imageView1);