所以我們正在研究一個問答遊戲/應用程序,我們只有一件事情有問題。 我們得到了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