2

イメージボタンをクリックするたびに、あるイメージから別のイメージに変更したい。私のコードでは、これは一度だけ機能し、画像が変更され、ボタンは onClick に戻りません。

誰か助けてくれませんか?

package com.wepromoteme.brapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

setupPlayPauseButton1();

} 

private void setupPlayPauseButton1() {
    ImageButton btn1 = (ImageButton) findViewById(R.id.play_pause1);

    btn1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ImageButton btn1 = (ImageButton)
findViewById(R.id.play_pause1);
            btn1.setImageResource(R.drawable.play);
        }
    });
}
}

ありがとう

@シュリー202

これは新しいコードです:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

setupPlayPauseButton1();

} 

private void setupPlayPauseButton1() {
    final ImageButton btn1 = (ImageButton) findViewById(R.id.play_pause1);

    btn1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            int i=0;
            if(i%2==0) {
                btn1.setImageResource(R.drawable.play);
            } else {
                btn1.setImageResource(R.drawable.pause);

            }
        }
    });
}
}

ありがとう

4

1 に答える 1

1

ImageButtonボタンの状態を拡張して保持する必要があります。したがって、クリックリスナーを次のように変更します。

    @Override
    public void onClick(View v) {
        MyImageButton btn1 = (MyImageButton) findViewById(R.id.play_pause1);
        btn1.toggleState();
        switch(btn1.getState()){
           case 0:
              btn1.setImageResource(R.drawable.play);
              break;
           case 1:
              bt1.setImageResource(R.drawable.stop);
              break;
        }
    }
于 2013-08-26T17:18:15.693 に答える