2012-02-14 5 views
0

저는 android 용 퀴즈 게임을 개발 중입니다. 무작위로 질문을 선택하기 위해 난수가 생성됩니다. 내가 중첩 된 switch 문에 도착하면이 부분에서 "v를 해결할 수 없습니다."라는 오류 메시지가 나타납니다. switch(v.getId()) { case R.id.button0: Toast.makeText(BeginGame.this, "success",Toast.LENGTH_SHORT).show();
break; default: Toast.makeText(BeginGame.this,"Fail",Toast.LENGTH_SHORT).show();
break;
안드로이드 onTouchListener가 중첩 된 switch 문에서 작동하지 않습니다.

의견이 있으십니까?

`공용 클래스 BeginGame는 확장 활동 {

public OnTouchListener nextListener = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      Log.d("base", "next"); 
     } 
     return false; 
     } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main2); 

     int[] questionArray = {-1,-1,-1,-1,-1,-1,-1}; 
     Random questionNumberGenerated = new Random(); 
     int num; 
     boolean duplicate = false; 


     do{ 
      num = questionNumberGenerated.nextInt(7); 
       for (int i=0; i<questionArray.length; i++){ 

        if (num == questionArray[i]){ 
         duplicate=true; 
         } 
        } 
       }while (duplicate); 

     if (duplicate=false){ 
      for (int j=0; j<questionArray.length; j++) 
       questionArray[j]=num; 
     } 






     switch (num) { 
     case 0:    
      Button button0 = (Button) findViewById(R.id.button0); 
      button0.setOnTouchListener(nextListener); 
      Button button1 = (Button) findViewById(R.id.button1); 
      button1.setOnTouchListener(nextListener); 
      Button button2 = (Button) findViewById(R.id.button2); 
      button2.setOnTouchListener(nextListener); 
      Button button3 = (Button) findViewById(R.id.button3); 
      button3.setOnTouchListener(nextListener); 
      TextView text = (TextView) findViewById(R.id.TextView01); 
      text.setText("press alabama:"); 
      button0.setText("Alabama"); 
      button1.setText("Mississippi"); 
      button2.setText("Philadelphia"); 
      button3.setText("Virginia");  
       switch(v.getId()) { 
       case R.id.button0: 
        Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); 
        break; 
       default: 
        Toast.makeText(BeginGame.this, "Fail", Toast.LENGTH_SHORT).show();   
        break; 
      } 
     case 1: 
      text.setText("press green"); 
      button0.setText("zsx"); 
      button1.setText("zczcz"); 
      button2.setText("zczc"); 
      button3.setText("green"); 
     case 2: 
      text.setText("press blue"); 
      button0.setText("www"); 
      button1.setText("aaa"); 
      button2.setText("dddd"); 
      button3.setText("blue"); 
     case 3: 
      text.setText("press red"); 
      button0.setText("111"); 
      button1.setText("222"); 
      button2.setText("3333"); 
      button3.setText("red"); 
     } 
    } 

} 정확히 어떻게 원하는 것을

`

+0

전체 src 코드를 제공하지 않았거나 코드에서 v를 선언하지 않았습니다. – jeet

+0

"v"를 어떻게 선언 할 수 있습니까? – user465001

+0

단순히 코드를 복사 한 코드로 돌아가서 v. –

답변

1

? 그 방법에서 v의 정의는 없다. 버튼 터치에 대한 작업을 수행하려면 해당 스위치 케이스를 다음과 같이 onTouch 메소드로 이동하십시오.

public boolean onTouch(View v, MotionEvent event) { 

     switch(v.getId()) { 
      case R.id.button0: 
       Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); 
       break; 
      default: 
       Toast.makeText(BeginGame.this, "Fail", Toast.LENGTH_SHORT).show();   
       break; 
     } 

    } 
+0

감사합니다. Raj. 네가 지적한 것을 이해한다. 난수가 올라 오면 switch 문 외부에있는 경우와 일치합니다. 이 경우 화면에 표시 할 텍스트와 버튼이 설정됩니다. 이 경우에 대한 내부 스위치 명령문은 터치 된 응답이 올바른지 판단하는 것입니다. 프로그램이 끝나지 않았습니다 - 저는 방금 v.getId에 머물러 있습니다. – user465001

+0

나는 또한 귀하의 모범 사례 인 Raj를 시도했지만 그게 효과가 없었습니다. – user465001

관련 문제