마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지버튼이 독립적으로 수행되지가 않습니다.

0 추천

버튼별로 각각 선택 및 해제가 가능하도록 만들고 싶은데요

현재 만든 코드로는 독립적으로 수행되지 않고, 다른 버튼의 상태에 영향을 받는 것 처럼 보입니다.

예를 들면 (버튼1,2 순서는 상관없음)

 - 버튼1을 첫번째 터치하면 선택이 되고 (선택이미지로 변경)

 - 버튼2를 첫번째 터치하면 무반응, 두번째 터치시 선택이 됩니다.

 - 두가지 다 선택된 상태에서도 버튼 1을 첫번째 선택하면 해제, 버튼2는 두번째 터치시 해제

해결하려고 며칠동안 구글링도 해보고 조건값들도 변경해봤는데 도무지 해결방법을 찾을 수가 없어서 질문드립니다.

질문1) 버튼이 다른 버튼 상태와 상관없이 선택/해제 가능

질문2) XML파일을 Selector를 이용하여 버튼별로 구성하려고 하는데 (예상버튼수 10개)

         더욱 간편한 방법은 없을까요?

MainActivity.Java

public class MainActivity extends AppCompatActivity {

        ImageButton imgbtn1;
        ImageButton imgbtn2;
        int i = 1;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
  
            imgbtn1 = (ImageButton) findViewById(R.id.imgbtn1);
      imgbtn2 = (ImageButton) findViewById(R.id.imgbtn2);

            Button.OnClickListener onClickListener = new Button.OnClickListener() {
                @Override
                public void onClick(View view) {
                    switch (view.getId()) {
                        case R.id.imgbtn1:
                            if (i % 2== 1) {
                                imgbtn1.setSelected(true); 
                                                          i++ ; 
                            } else {
                                imgbtn1.setSelected(false);
                                i--;
                            } break;
                        case R.id.imgbtn2:
                            if (i % 2 ==1) {
                                imgbtn2.setSelected(true); 
                                                          i++;  
                            } else {
                                imgbtn2.setSelected(false);
                                i--;
                            }break;

                    }
                }
            };
            imgbtn1.setOnClickListener(onClickListener);
            imgbtn2.setOnClickListener(onClickListener);
        }
}

 

버튼별 XML 예시

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false" android:drawable="@drawable/hair1"></item>
    <item android:state_selected="true" android:drawable="@drawable/hair2"></item>
    <item android:drawable="@drawable/hair1"/>
</selector>
카쇼페아 (180 포인트) 님이 2020년 5월 7일 질문

2개의 답변

0 추천
스위치케이스가아닌 if문으로 쓰시면 브레이크안타서 될거같은데

두세개면 스위치케이스랑 이프문이랑 차이 없어용 ...
익명사용자 님이 2020년 5월 7일 답변
버튼이 10개~15개 사이 정도 될 것 같아서요...
0 추천
i 값이 공용이라 그런 듯 합니다. i 에 해당하는 변수를 i1~i10까지 각각 만드시면 될 듯 합니다..

단지 굳이 i로 비교 할 이유 없이,

imgbtn1.setSelected(!imgbtn1.isSelected()); 같이 해도 토글 될 듯 하네요.
익명사용자 님이 2020년 5월 8일 답변
2020년 5월 8일 수정
토글로 해결 했습니다.
정말 감사합니다!! 감사합니다!
...