2012-07-09 216 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);