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

OnClickListener 중복에대한 전체소스로 다시질문.

0 추천

중복에 대해 방금 질문올렸다가 답변에 달린대로 어떻게 퀴즈 어플을 만들지 답이안나와서 소스로 질문올립니다

문제1이 뛰어져있는상태에서

if(quiz==1){
 
 O.setOnClickListener(new OnClickListener(){
 public void onClick(View v){
 Toast.makeText(getBaseContext(), "정답!", Toast.LENGTH_LONG).show();
 quiz++;
 fizzText.setText("문제2.");
}
});
X.setOnClickListener(new OnClickListener(){
public void onClick(View v){
 
Toast.makeText(getBaseContext(), "틀렸습니다!", Toast.LENGTH_LONG).show();
quiz++;
fizzText.setText("문제2.");
}
});
}
if(quiz==2){
 
O.setOnClickListener(new OnClickListener(){
public void onClick(View v){
life--;
Toast.makeText(getBaseContext(), "틀렸습니다!", Toast.LENGTH_LONG).show();
quiz++;
fizzText.setText("문제3.");
}
});
X.setOnClickListener(new OnClickListener(){
public void onClick(View v){
Toast.makeText(getBaseContext(),  "정답!", Toast.LENGTH_LONG).show();
quiz++;
fizzText.setText("문제3.");
}
});
 
}
이렇게 onCreate 밖에다가 만들었고요.. 이런식으로 하려는데 클릭리스너가 중복되어서그런지 계속 1번 문제의 답이 답으로 설정되네요.. 
나이콘 (140 포인트) 님이 2013년 8월 13일 질문
답을 지정하는 코드가 없는데 어디서 지정하는거죠?

2개의 답변

+1 추천

O.setOnClickListener(new OnClickListener(){

public void onClick(View v){
O.setOnClickListener(new OnClickListener(){
    public void onClick(View v){
        if(quiz==1) {
            Toast.makeText(getBaseContext(), "정답!", Toast.LENGTH_LONG).show();
            quiz++;
            fizzText.setText("문제2");
        }else if(quiz==2) {
            life--;
            Toast.makeText(getBaseContext(), "틀렸습니다!", Toast.LENGTH_LONG).show();
            quiz++;
            fizzText.setText("문제3");
        }
    }
}

이런식으로 해보세요...

 

익명사용자 님이 2013년 8월 13일 답변
다른 안드로이스 커뮤니티에 질문 올렸는데 거기의 답변이랑 같네요..

그런데 그렇게 하면 안될거같아서..
그렇게 하면 안되는건 님 생각이구요.
이건 객체지향 응용프로그램이지 c로 짜는 콘솔 프로그램이 아니랍니다.
0 추천
처음 답변 주신 분의 소스 대로 하는 것이 일반적인 방법입니다.

퀴즈를 진행하기 위한 절차를 아예 처음 부터 다시 생각하셔야할 것 같아요..

 

quiz라는 변수가 1씩 증가할 때마다 리스너를 새롭게 지정해주고 싶으신거 같은데..

onCreate밖에다 위와같이 만들었다 하심은 결국 위와 같은 메소드를 만들어 주셨다는 걸로 이해하면 되나요?

그러면 퀴즈가 진행 될때마다 그 메소드가 호출이 되나요? 그래야 다시 quiz를 체크해서 리스너를 새로 등록할 수 있겠죠..

지금 적어 놓으신 대로 차례차례 진행되는 것이 아니랍니다...

한번 잘 생각해보세요.
코사장 (610 포인트) 님이 2013년 8월 13일 답변
...