-1

アトラクションのリストがあるスピナーがあります。switch case ステートメントを使用して、ユーザーが選択したアトラクションに応じて表示される画像を変更したいと考えています。

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.attractions_layout);

    ArrayAdapter<String> attractionsAdapter = new ArrayAdapter<String> (Attractions.this, android.R.layout.simple_spinner_item, attractionEntries);

    attractionsSpinner = (Spinner) findViewById (R.id.spinnerAttractions);
    attractionsSpinner.setAdapter(attractionsAdapter);
    attractionsSpinner.setOnItemSelectedListener(this);

}
    @Override
    public void onItemSelected(AdapterView<?> parent,View view, int position, long id) {
        // TODO Auto-generated method stub
        int pos = attractionsSpinner.getSelectedItemPosition();
        ImageView imageView = (ImageView) findViewById(R.id.imageViewAttraction);
        String[] information = getResources().getStringArray(R.array.attractions_information_collection);

        switch (position)
        {
        case 0:
            image = R.drawable.avenue_of_stars;
            imageView.setImageResource(image);

            break;
        case 1:
            image = R.drawable.disneyland_fountain;
            imageView.setImageResource(image);

            break;  
        }
    }

「画像を変数として解決できません」というエラー メッセージが表示されます

4

2 に答える 2

2

に対して型が宣言されていませんimage。スイッチを開始する前に宣言します

int image = 0;
switch (position)
    {
    case 0:
        image = R.drawable.avenue_of_stars;
        imageView.setImageResource(R.drawable.avenue_of_stars;);

        break;
    case 1:
        image = R.drawable.disneyland_fountain;
        imageView.setImageResource(R.drawable.disneyland_fountain);

        break;  
    }
}

または、値を使用するだけですsetImageResource()

  switch (position)
    {
    case 0:
        imageView.setImageResource(R.drawable.avenue_of_stars;);

        break;
    case 1:
        imageView.setImageResource(R.drawable.disneyland_fountain);

        break;  
    }
}

またはそれを単純化します

int image = 0;
  switch (position)
    {
    case 0:
        image = R.drawable.avenue_of_stars;
        break;
    case 1:
        image = R.drawable.disneyland_fountain;
        break;  
    }
 imageView.setImageResource(R.drawable.disneyland_fountain);
}
于 2013-03-04T20:53:13.600 に答える
1

エラーメッセージは、「image」という変数を宣言していないため、その単語を使用したときに何をしようとしているのかわからないことを示しています。

コードを次のように変更します。

private int image = -1; // <-- you have to declare a variable to be able to use it (in java).
private imageView; // <-- declare this ImageView up here too, while your at it.

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.attractions_layout);
    imageView = (ImageView) findViewById(R.id.imageViewAttraction); //Move findViewById() to here, calling it more than once is wasteful.
    ArrayAdapter<String> attractionsAdapter = new ArrayAdapter<String> (Attractions.this, android.R.layout.simple_spinner_item, attractionEntries);

    attractionsSpinner = (Spinner) findViewById (R.id.spinnerAttractions);
    attractionsSpinner.setAdapter(attractionsAdapter);
    attractionsSpinner.setOnItemSelectedListener(this);

}
    @Override
    public void onItemSelected(AdapterView<?> parent,View view, int position, long id) {
        // TODO Auto-generated method stub
        int pos = attractionsSpinner.getSelectedItemPosition();
        String[] information = getResources().getStringArray(R.array.attractions_information_collection);
        switch (position)
        {
        case 0:
            image = R.drawable.avenue_of_stars;
            imageView.setImageResource(image);

            break;
        case 1:
            image = R.drawable.disneyland_fountain;
            imageView.setImageResource(image);

            break;  
        }
    }

imageIDを格納できるようにするには、呼び出されるintを宣言する必要があります。

またfindViewById()、ユーザーが何かを選択するたびに画像ビューへの参照を取得するために呼び出すのは無駄であることに注意してください。内部で参照を取得onCreate()し、その後の呼び出しごとにその参照を使用する必要があります。setImageResource()

最後のヒント:Javaプログラミングと構文の基本のいくつかを理解していないようです。複雑なAndroidプロジェクトに飛び込む前に、少し時間を取って戻ってJava言語に慣れるための作業を行うことを強くお勧めします。そうすることであなたの人生はずっと楽になります=)。

于 2013-03-04T20:52:13.057 に答える