2

ImageViewボタンをクリックしたときにトグルさせようとしています。私は以下のコードを持っています:

    ImageView button01 = (ImageView) findViewById(R.id.button01);
    button01.setOnClickListener(new OnClickListener() {
        int button01pos = 0;
        public void onClick(View v) {
            if (button01pos == 0) {
                button01.setImageResource(R.drawable.image01);
                button01pos = 1;
            } else if (button01pos == 1) {
                button01.setImageResource(R.drawable.image02);
                button01pos = 0;
            }
        }
    });

しかし、何らかの理由で、Eclipseではbutton01に赤で下線が引かれ、エラーが発生します。

別のメソッドで定義された内部クラス内の非最終変数button01を参照することはできません

なぜそれがこれをしているのか、そしてそれを修正する方法を誰かが知っていますか?

ありがとう

4

3 に答える 3

7

動作するコードは次のとおりです。

final ImageView button01 = (ImageView) findViewById(R.id.button01);
button01.setOnClickListener(new OnClickListener() {
    int button01pos = 0;
    public void onClick(View v) {
        if (button01pos == 0) {
            button01.setImageResource(R.drawable.image01);
            button01pos = 1;
        } else if (button01pos == 1) {
            button01.setImageResource(R.drawable.image02);
            button01pos = 0;
        }
    }
});
于 2012-05-04T11:25:51.660 に答える
0

これを試してみてください、それは私のために働きました。ここでは、チェックボックスの可視性が「非表示」に設定されています...!このコードはボタンOnClickListenerの中にあります...!

@Override
public void onClick(View v) {

    ImageView iv_icon = (ImageView) findViewById(R.id.icon);

    CheckBox cb = (CheckBox) findViewById(R.id.cb);

    if (cb.isChecked()) {
        iv_icon.setImageResource(R.drawable.image01);
        cb.setChecked(false);
    } else if (!cb.isChecked()) {
        iv_icon.setImageResource(R.drawable.image02);
        cb.setChecked(true);
    } else {
        // Nothing happens
    }
}
于 2013-12-23T11:02:09.350 に答える
0

これを試して、

        int button01pos = 0;

        ImageView button01 = (ImageView) findViewById(R.id.button01);
        button01.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if (button01pos == 0) {
                button01.setImageResource(R.drawable.image01);
                button01pos = 1;
            } else if (button01pos == 1) {
                button01.setImageResource(R.drawable.image02);
                button01pos = 0;
            }
        }
    });
于 2015-02-06T01:12:20.443 に答える