왼쪽 및 오른쪽 단추 두 개가 있습니다. 사용자가 왼쪽 버튼을 클릭 한 다음 오른쪽 버튼을 클릭 할 때 비교되는 코드가 있습니다. 버튼의 텍스트를 비교합니다. 그리고 그것은 잘 작동합니다. 하지만, 또 다른 문제가 있습니다. 나는 왼쪽이나 오른쪽의 버튼 사이를 자유롭게 돌아 다닐 필요가있다. 사용자가 아무런 조치없이 원하는 횟수만큼 같은 쪽 버튼의 왼쪽 또는 오른쪽을 클릭 할 수있게 해준다. 이제는 예를 들어 왼쪽에있는 두 개의 버튼을 클릭 할 때마다 조치가 취해집니다. 나는 그것을 가질 수 없다. 여기 내 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);
}
}
나는 분실했습니다. 소개에서 사용자가 원하는만큼 왼쪽과 오른쪽을 클릭하기를 원하지만 왼쪽을 두 번 클릭하면 조치가 취해집니다. 코드를 살펴보면, 클릭 한 첫 번째 단추인지 저장하고 있는지 찾고 있습니다. 그런 다음 두 번째 버튼을 클릭하면 첫 번째 버튼과 동일한 지 비교합니다. 그렇다면 점수를 정합니다 ... "행동을 취하는 것"이 의미하는 바는 무엇입니까? – Dave
예, 첫 번째 버튼을 누른 다음 저장하고 두 번째 버튼을 비교합니다. 그러나 나는 왼쪽과 오른쪽 버튼 만 비교하기를 원합니다. 따라서 사용자는 왼쪽의 버튼 하나를 클릭 한 다음 오른쪽의 버튼 하나를 클릭해야합니다. 하지만 사용자가 왼쪽의 버튼 하나를 클릭하고 오른쪽의 버튼 하나를 클릭하면 왼쪽의 버튼에 대해 마음이 바뀌고 왼쪽에서 다른 버튼을 선택하려고합니다. 자, 내 문제가있다. 내 코드는 왼쪽에있는 첫 번째 코드와 왼쪽에 클릭 한 두 번째 코드를 비교합니다. 이는 내 게임에 좋지 않습니다. 그럴 경우에는 아무것도 일어나지 않아야합니다. – nabuko