所以我们正在研究一个问答游戏/应用程序,我们只有一件事情有问题。 我们得到了4个可能的答案按钮,只有其中一个是正确的(明显)。他们是正规的按钮,上面有文字,而不是无线电。问题是,为了避免为每个问题创建一个活动,我们希望将按钮保存在一个活动中,并且在按下“正确答案”时将按钮功能更改为不同。例如,按钮1,2,3都会让玩家在屏幕上显示,而按钮4则是正确的。然后,它应该改变按钮上显示的文本并更改所有按钮的功能,以使1,3,4现在成为“游戏结束按钮”,2是正确的。我们尝试了如果语句和整数以及布尔值,都无济于事。任何可以帮助我们的提示或解决方案? 谢谢如何将按钮所具有的功能更改为不同的功能?
0
A
回答
1
鉴于您目前的设置,我会让每个按钮的onClick调用方法如validateCorrectAnswer(int buttonNumber)
,然后从那里你会做你的验证。所以对于button1,你可以拨打validateCorrectAnswer(1)
。
从validateCorrectAnswer(...)
你会有一个正确的答案阵列,所以它可能是类似于int[] correctAnswers = {4, 2, 3, 4, 1, 3, 2, 1, ...};
和取决于他们在哪个问题上你会检查。假设您在问题3中检查correctAnswers[2] == buttonNumber
。
因此,为了进一步简化您的活动存储中他们当前在全局变量中的问题,如private int currentQuestion = 0
,然后在每个问题后增加该数字。
所以最终的方法是这样的:
void validateCorrectAnswer(int buttonNumber) {
if (correctAnswer[currentQuestion] == buttonNumber) {
currentQuestion++;
// correct answer, cool move on
} else {
// wrong answer, game over
}
}
0
在你的问题类,你可以答案设置为文本/按钮的ID和检查上的按钮,只要单击一下按钮上的文字/ id是和你的答案一样。
另外,请参见本实施例中从butterknife:
//Specify multiple IDs in a single binding for common event handling.
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
if (door.hasPrizeBehind()) {
Toast.makeText(this, "You win!", LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Try again", LENGTH_SHORT).show();
}
}
0
你可以使用setTag(tagValue)和getTag(tagValue)方法的4个按钮。
1 - 正确
0 - 错
然后就是根据给出的答案切换tagValues。
@Override
public void onClick(View view) {
int answer = 0;
if(view instanceof Button) {
answer = (int) ((Button)view).getTag();
}
if(answer == 1) {
//true answer
refreshButtons();
} else {
//game over
}
Log.d("TAG", "a: "+answer);
}
public void refreshButtons() {
questionNr ++;
Log.d("TAG", "q: "+questionNr);
setAnswers(questionNr);
}
public void setAnswers (int question) {
switch (question){
case 1: // Second question
v1.setTag(0);//wrong
v2.setTag(1);//correct
v3.setTag(0);//wrong
v4.setTag(0);//wrong
break;
case 2:// Third question
v1.setTag(0);//wrong
v2.setTag(0);//wrong
v3.setTag(1);//correct
v4.setTag(0);//wrong
break;
case 3:// Forth question
v1.setTag(0);//wrong
v2.setTag(0);//wrong
v3.setTag(0);//wrong
v4.setTag(1);//correct
break;
}
}
你也设置在同一setAnswer()方法
的onCreate()方法用于其他意见的文本可能是这样的:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//here you setup the answers for the first question
v1 = (Button) findViewById(R.id.button1);
v1.setOnClickListener(this);
v1.setTag(1);
v2 = (Button) findViewById(R.id.button2);
v2.setOnClickListener(this);
v2.setTag(0);
v3 = (Button) findViewById(R.id.button3);
v3.setOnClickListener(this);
v3.setTag(0);
v4 = (Button) findViewById(R.id.button4);
v4.setOnClickListener(this);
v4.setTag(0);
相关问题
- 1. 更改按钮的功能
- 2. 如何更改按钮的功能?
- 3. 如何能够生成具有相同功能的不同字母表按钮?
- 4. 更改按钮上的UITableView功能按
- 5. 按钮具有不同的功能,第二次点击并更改文字
- 6. 如何将内部功能更改为自己的功能?
- 7. 如何通过该功能外的按钮修改功能?
- 8. 更改按钮点击的功能?
- 9. 在JavaScript中更改按钮的功能
- 10. 更改后退按钮的功能android
- 11. 具有两个功能的Android按钮
- 12. 如何为具有相似功能的所有按钮提供单一方法
- 13. 如何更改按键功能以单击javascript中的功能
- 14. 将功能更改为PDO
- 15. 如何将onClick更改为onHover功能?
- 16. 具有更改功能的HTML5滑块
- 17. 在功能区加载功能区中更改按钮
- 18. javascript - 更改功能onclick按钮(使用另一个功能)
- 19. 如何创建一个将被用于具有不同功能的所有窗体的按钮?
- 20. 如何更改的功能
- 21. 更改按钮功能动画
- 22. 按钮组使用JQuery更改功能
- 23. 我如何有一个SimpleListFilter功能的所有按钮
- 24. 按钮功能
- 25. 如何更改按钮的功能以及它的文本
- 26. C#如果计数器如何更改按钮“功能”,按它
- 27. 如何在asp.net c#中使用多个按钮,具有不同的功能
- 28. 如何更改提交按钮文本而不丢失功能?
- 29. 如何循环,我在jQuery的所有按钮的功能
- 30. 的slideToggle功能将所有
嘿Konrol。欢迎来到Stack Overflow。我建议分享你的代码,以及迄今为止投入了多少努力。 –
请编辑您的问题并加入相关的源代码。 – ventiseis