2013-03-26 4 views
0

왼쪽 및 오른쪽 단추 두 개가 있습니다. 사용자가 왼쪽 버튼을 클릭 한 다음 오른쪽 버튼을 클릭 할 때 비교되는 코드가 있습니다. 버튼의 텍스트를 비교합니다. 그리고 그것은 잘 작동합니다. 하지만, 또 다른 문제가 있습니다. 나는 왼쪽이나 오른쪽의 버튼 사이를 자유롭게 돌아 다닐 필요가있다. 사용자가 아무런 조치없이 원하는 횟수만큼 같은 쪽 버튼의 왼쪽 또는 오른쪽을 클릭 할 수있게 해준다. 이제는 예를 들어 왼쪽에있는 두 개의 버튼을 클릭 할 때마다 조치가 취해집니다. 나는 그것을 가질 수 없다. 여기 내 onclicklistener 및 nextQuestion 메서드.아무런 조치없이 버튼을 클릭하는 방법?

안드로이드 : 태그 = "L" 안드로이드 : 태그 = "R"

final OnClickListener clickListener = new OnClickListener() { 

      private Button buttonClicked; 
      private int brojacKlikova = 0; 

      public void onClick(View v) { 
       brojacKlikova++; 
       if (brojacKlikova < 6) { 

       Button button = (Button) v; 
       button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333)); 

       if (buttonClicked == null) { 
        // first button is clicked 
        buttonClicked = button; 
       } else { 
        // second button is clicked 
        if (buttonClicked.getTag().equals(button.getTag())) { 
         button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33)); 
         buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33)); 
         buttonClicked.setEnabled(false); 
         button.setEnabled(false); 
         counter = counter + 5; 
         score.setText("Poeni: " + counter); 
        } else { 
         button.setEnabled(false); 
         button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFCC99)); 
         buttonClicked.getBackground().clearColorFilter(); 
        } 
        buttonClicked = null; 
       } 
       }else{ 
       brojacKlikova = 0; 
       brojacVremena.cancel(); 
       mHandler.postDelayed(mLaunchTask,2200); 
     } 
      } 
    }; 

그리고 nextQuestion 것이 중요 경우

은 내가, 왼쪽 및 오른쪽 버튼에 대한 XML 파일의 태그를 설정 :

public void nextQuestion() { 

     brojacIgara = brojacIgara + 1; 


     TestAdapter mDbHelper = new TestAdapter(this); 
     mDbHelper.createDatabase(); 

     try{ //Pokusava da otvori db 

      mDbHelper.open(); //baza otvorena 

      Cursor c = mDbHelper.getTestData(generateWhereClause()); 

      mAnsweredQuestions.add(c.getLong(0)); 

      ArrayList<MyStruct> labelsA = new ArrayList<MyStruct>(); 
      ArrayList<MyStruct> labelsB = new ArrayList<MyStruct>(); 

      labelsA.add(new MyStruct(c.getString(2), "1")); // this tag should be the same to button that matches 
      labelsB.add(new MyStruct(c.getString(3), "1")); 
      labelsA.add(new MyStruct(c.getString(4), "2")); 
      labelsB.add(new MyStruct(c.getString(5), "2")); 
      labelsA.add(new MyStruct(c.getString(6), "3")); 
      labelsB.add(new MyStruct(c.getString(7), "3")); 
      labelsA.add(new MyStruct(c.getString(8), "4")); 
      labelsB.add(new MyStruct(c.getString(9), "4")); 
      labelsA.add(new MyStruct(c.getString(10), "5")); 
      labelsB.add(new MyStruct(c.getString(11), "5")); 
      labelsA.add(new MyStruct(c.getString(12), "6")); 
      labelsB.add(new MyStruct(c.getString(13), "6")); 
      labelsA.add(new MyStruct(c.getString(14), "7")); 
      labelsB.add(new MyStruct(c.getString(15), "7")); 
      labelsA.add(new MyStruct(c.getString(16), "8")); 
      labelsB.add(new MyStruct(c.getString(17), "8")); 

      Collections.shuffle(labelsA); 
      Collections.shuffle(labelsB); 

      if (brojacIgara < 4){ 

      pitanje.setText(c.getString(1)); 

      a1.setText(labelsA.get(0).label); 
      a1.setTag(labelsA.get(0).tag); 
      a1.setOnClickListener(clickListener); 
      a1.getBackground().clearColorFilter(); 
      a1.setEnabled(true); 
      b1.setText(labelsB.get(0).label); 
      b1.setTag(labelsB.get(0).tag); 
      b1.setOnClickListener(clickListener); 
      b1.getBackground().clearColorFilter(); 
      b1.setEnabled(true); 
      a2.setText(labelsA.get(1).label); 
      a2.setTag(labelsA.get(1).tag); 
      a2.setOnClickListener(clickListener); 
      a2.getBackground().clearColorFilter(); 
      a2.setEnabled(true); 
      b2.setText(labelsB.get(1).label); 
      b2.setTag(labelsB.get(1).tag); 
      b2.setOnClickListener(clickListener); 
      b2.getBackground().clearColorFilter(); 
      b2.setEnabled(true); 
      a3.setText(labelsA.get(2).label); 
      a3.setTag(labelsA.get(2).tag); 
      a3.setOnClickListener(clickListener); 
      a3.getBackground().clearColorFilter(); 
      a3.setEnabled(true); 
      b3.setText(labelsB.get(2).label); 
      b3.setTag(labelsB.get(2).tag); 
      b3.setOnClickListener(clickListener); 
      b3.getBackground().clearColorFilter(); 
      b3.setEnabled(true); 
      a4.setText(labelsA.get(3).label); 
      a4.setTag(labelsA.get(3).tag); 
      a4.setOnClickListener(clickListener); 
      a4.getBackground().clearColorFilter(); 
      a4.setEnabled(true); 
      b4.setText(labelsB.get(3).label); 
      b4.setTag(labelsB.get(3).tag); 
      b4.setOnClickListener(clickListener); 
      b4.getBackground().clearColorFilter(); 
      b4.setEnabled(true); 
      a5.setText(labelsA.get(4).label); 
      a5.setTag(labelsA.get(4).tag); 
      a5.setOnClickListener(clickListener); 
      a5.getBackground().clearColorFilter(); 
      a5.setEnabled(true); 
      b5.setText(labelsB.get(4).label); 
      b5.setTag(labelsB.get(4).tag); 
      b5.setOnClickListener(clickListener); 
      b5.getBackground().clearColorFilter(); 
      b5.setEnabled(true); 
      a6.setText(labelsA.get(5).label); 
      a6.setTag(labelsA.get(5).tag); 
      a6.setOnClickListener(clickListener); 
      a6.getBackground().clearColorFilter(); 
      a6.setEnabled(true); 
      b6.setText(labelsB.get(5).label); 
      b6.setTag(labelsB.get(5).tag); 
      b6.setOnClickListener(clickListener); 
      b6.getBackground().clearColorFilter(); 
      b6.setEnabled(true); 
      a7.setText(labelsA.get(6).label); 
      a7.setTag(labelsA.get(6).tag); 
      a7.setOnClickListener(clickListener); 
      a7.getBackground().clearColorFilter(); 
      a7.setEnabled(true); 
      b7.setText(labelsB.get(6).label); 
      b7.setTag(labelsB.get(6).tag); 
      b7.setOnClickListener(clickListener); 
      b7.getBackground().clearColorFilter(); 
      b7.setEnabled(true); 
      a8.setText(labelsA.get(7).label); 
      a8.setTag(labelsA.get(7).tag); 
      a8.setOnClickListener(clickListener); 
      a8.getBackground().clearColorFilter(); 
      a8.setEnabled(true); 
      b8.setText(labelsB.get(7).label); 
      b8.setTag(labelsB.get(7).tag); 
      b8.setOnClickListener(clickListener); 
      b8.getBackground().clearColorFilter(); 
      b8.setEnabled(true); 
      } 
} 
+0

나는 분실했습니다. 소개에서 사용자가 원하는만큼 왼쪽과 오른쪽을 클릭하기를 원하지만 왼쪽을 두 번 클릭하면 조치가 취해집니다. 코드를 살펴보면, 클릭 한 첫 번째 단추인지 저장하고 있는지 찾고 있습니다. 그런 다음 두 번째 버튼을 클릭하면 첫 번째 버튼과 동일한 지 비교합니다. 그렇다면 점수를 정합니다 ... "행동을 취하는 것"이 ​​의미하는 바는 무엇입니까? – Dave

+0

예, 첫 번째 버튼을 누른 다음 저장하고 두 번째 버튼을 비교합니다. 그러나 나는 왼쪽과 오른쪽 버튼 만 비교하기를 원합니다. 따라서 사용자는 왼쪽의 버튼 하나를 클릭 한 다음 오른쪽의 버튼 하나를 클릭해야합니다. 하지만 사용자가 왼쪽의 버튼 하나를 클릭하고 오른쪽의 버튼 하나를 클릭하면 왼쪽의 버튼에 대해 마음이 바뀌고 왼쪽에서 다른 버튼을 선택하려고합니다. 자, 내 문제가있다. 내 코드는 왼쪽에있는 첫 번째 코드와 왼쪽에 클릭 한 두 번째 코드를 비교합니다. 이는 내 게임에 좋지 않습니다. 그럴 경우에는 아무것도 일어나지 않아야합니다. – nabuko

답변

0

왼쪽 버튼에는 하나의 수신기를 설정할 수 있고 오른쪽 버튼에는 다른 수신기를 설정할 수 있습니다. 결과를 유지하려면 buttonClicked 필드를 리스너에서 제외하고이 리스너가 포함 된 활동으로 설정해야합니다. 각 청취자는 배경 버튼을 원하는 색상으로 설정하고 클릭 할 때마다 다른 버튼 배경색을 재설정해야합니다.

원하는지 알려주세요.

+0

이것은 좋은 소리. – nabuko

+0

자세한 내용은 이메일로 알려 주실 수 있습니까? – nabuko

0
 a1.setText(labelsA.get(0).label); 
     a1.setTag(0); 
     ... 
     b1.setTag(1); 
     ... 
     a2.setTag(2); 

등등.

당신은 그들이 다른 경우 태그를 가져온 다음 int로 당신이 경우 B.

을 2 분할하고 열 A 또는 있는지 확인하기 위해 모듈 (%)를 사용하는 변환 확인하기 위해 검사를 수행 할 때 태그를 가져올 필요가 있습니다. 방금/2를 인덱스로 사용하는 int를 사용하여 레이블 배열을 다시 참조하십시오.

+0

아니, 그건 나에게 좋지 않다. 여기 스크린 샷이 있습니다. 아마도 도움이 될 것입니다. [link] (http://i.imgur.com/70LuHjs.jpg) 사용자가 버튼 A4를 클릭하고 B 버튼 중 일부를 클릭 한 다음 A2를 다시 클릭하고 A7을 다시 클릭하면 클릭합니다. 일부 B 버튼 (예 : B3)에 있습니다. 버튼 A7과 B3의 텍스트 값을 비교하기 위해서만 필요합니다. A와 B 열 사이의 비교 만 필요하며 A 또는 B 단추는 필요하지 않습니다. 사용자가 B 열의 일부를 누를 때까지 A 열과 아무 일도하지 않고 자유롭게 나가길 원합니다. 더 잘 설명하는 법을 모르겠습니다. – nabuko

+0

MyStruct가 수행하는 작업을 보지 못했고 태그가 열로 설정되어 있다고 가정했습니다. 따라서 텍스트의 첫 글자를 확인하십시오. 둘 다 A이면 둘 다 A 열에 있으므로 서로 달라야합니다. 업데이트 된 답변을 확인하십시오. – Dave

+0

:) 아니, 실제로 그 편지는 목적을 설명하기위한 것입니다. 나는 그 버튼을 sqlite db로부터 무작위로 채 웁니다. 예를 들어 "도시와 그 나라의 연결"또는 "가수와 함께하는 노래".하지만 XML 파일 행에 android : tag = "l"및 android : tag = "r"을 입력하면 도움이됩니다. – nabuko

관련 문제