안드로이드 개발 질문/답변
(글 수 45,052)
findViewById(R.id.no0).setOnClickListener(click);
findViewById(R.id.no1).setOnClickListener(click);
findViewById(R.id.no2).setOnClickListener(click);
findViewById(R.id.no3).setOnClickListener(click);
}
Button.OnClickListener click = new Button.OnClickListener(){
@Override
public void onClick(View v){
for(int i=0;i<3;i++)
{
switch (v.getId())
{
case R.id.no0 : user[i]=0;
Toast.makeText(Oneplay.this,"새로이 선언", Toast.LENGTH_SHORT).show();break;
// 윗줄은 입력 돌아가는지 확인차 넣었습니다.
case R.id.no1 : user[i]=1;break;
case R.id.no2 : user[i]=2;break;
case R.id.no3 : user[i]=3;break;
}
}
}
};
안녕하세요.. 안드로이드 어플을 처음 짜보는 사람입니다 ㅠ
자바 소스의 일부입니다.
위와 같이 switch문 바로 밖을 for문으로 3번 돌리면 저는
클릭 3번만큼 받아 질거라고 믿었습니다.
예를들면 첫번째 0 버튼 클릭하면 user[0]=0;
두번째로 3버튼 클릭하면 user[1]=3;
세번째로 2버튼 클릭하면 user[2]=2;
이렇게 한번씩 받을줄 알았는데 생각과는 다르더라구요....
0을 한번 클릭하니... "새로이선언"이라는 창이 3번 연속적으로 생기고 사라지더라구요....
즉 0을 한번 클릭하면 user[0]=0; user[1]=0; user[2]=0 이렇게 한번에 3개가 다 정해지는거 같습니다.
여기서 질문 몇가지 물어보겠습니다 ㅠ
1 ) for문의 위치가 잘못되어서 한번 클릭에 세번의 값이 다 들어가는건가요??
2) 혹시 for문의 위치가 잘못 되었다면 어떻게 고쳐야 할까요?
3) 한번 클릭한 버튼은 두번다시 클릭 안되게 하고 싶습니다. 그러면 어떤 처리를 해야 할까요?
4) 질문3)의 경우 다시 쓰게 해주고 싶으면 어떤 처리를 해야 하는건가요?
5) 3번의 클릭이후 더이상 0~3번의 버튼이 클릭된적 없더라도 클릭이 안되게 바꾸고 싶으면 어떻게 해야 할까요?
질문이 너무 애매할지도 모르겠네요 ㅠㅠ
혹시 질문 1)~ 5) 중에 아시는거 있으신분 답변좀 부탁드립니다.
아는부분만이라도 가르쳐 주시면 열심히 찾아서 만들어 보겠습니다.




switch 문 내부에서 case 를 1개 선택하면 그 끝에 break 가 있네요.
그럼. break 로 인해 switch 문을 벗어날 수 있으나..
for 문을 빠져나가지는 못하고,
이미 선택했던 버튼은 이미 id 를 얻어왔으니 3번 for문 순환하는 결과가 나타납니다.
break, return, continue 등을 사용하여 빠져나가는 것을 한번 naver 등에서 검색해보세요.
오래 개발하였던 사람들 조차 실수하는 경우가 많습니다.
클릭 리스너 생성하였으나 코드상 한번 입력 받고 2번째값을 받을 수 없는 구조로 되어있습니다.
리스너 밖에서 순환되게 해결해보세요.