0

スピナーの選択に基づいてイメージビューのイメージを変更しようとしていますが、stackoverflow とインターネットでこのようなものを探しましたが、何も機能しません! なんで?どんな助けでも大歓迎です!ここに私の .java ソースがあります:

public class ChordsActivity extends Activity implement OnItemSelectedListener{ Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chords);
    spinner = (Spinner) findViewById(R.id.SpinnerAkordi);
    spinner.setOnItemSelectedListener(this);

    ImageView chord_img=(ImageView) findViewById(R.id.image);
    chord_img.setImageResource(R.drawable.c_dur);
}



@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    int position = spinner.getSelectedItemPosition ();
    ImageView chord_img= new ImageView(this); //delete this and it will work
    switch (position){
    case 0:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("C").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.c_dur);
        break;
    case 1:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("D").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    case 2:
    new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("E").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    }
}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

}

および .xml の imageview 部分:

回答: 削除: ImageView chord_img= new ImageView(this); これは、すでにイメージビューがあり、この行で表示されていない新しいイメージビューを作成したためです。

4

1 に答える 1

2

ローカル変数をフィールドに昇格するchord_imgと、役立つ場合があります。ビズ:

private ImageView chord_img;

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    int position = spinner.getSelectedItemPosition ();
    chord_img = new ImageView(this);
    switch (position){
    case 0:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("C").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.c_dur);
        break;
    case 1:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("D").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    case 2:
    new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("E").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    }
}
于 2013-01-16T23:10:40.440 に答える