用户正在单击四个按钮之一后,我正在检查答案。我通过在每个按钮上设置标签,然后使用创建的getTag()
中的onClickListener
来检查单击的View的值是否等于存储在SQLite数据库中的相应正确答案,来实现这一点。
问题是我现在无法摆脱这个onClickListener
,
我想有一个单独的方法checkAnswer()
,在答案为true的情况下,所有逻辑都是正确的(当前,我将其中的一些放入onClickListener
中)。如何确定确切的Button是按下?
View.OnClickListener answerChecker = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (view.getTag() != null && view.getTag().equals(mCorrectAnswer)) {
view.setBackgroundColor(getResources().getColor(R.color.colorButtonCorrectAns));
mDetailedAnswerView.setVisibility(View.VISIBLE);
mRatingBar.setVisibility(View.VISIBLE);
mNextButton.setEnabled(true);
mScore++;
mScoreTextView.setText("Score: " + mScore);
} else {
view.setBackgroundColor(getResources().getColor(R.color.colorButtonWrongAns));
}
}
};
mChoice1.setOnClickListener(answerChecker);
mChoice2.setOnClickListener(answerChecker);
mChoice3.setOnClickListener(answerChecker);
mChoice4.setOnClickListener(answerChecker);
答案 0 :(得分:0)
个人而言,当我处理具有onclick事件的许多组件时,我会尝试将所有内容组合为一个函数。
例如,如果您有活动/片段,则可以使用以下代码
public class SearchActivity extends AppCompatActivity implements View.OnClickListener
{
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
Button btn1 = findviewbyid(R.id.btn1);
Button btn2 = findviewbyid(R.id.btn2);
Button btn3 = findviewbyid(R.id.btn3);
Button btn4 = findviewbyid(R.id.btn4);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId())
{
case R.id.btn1:
//will trigger when you press on first btn
break;
case R.id.btn2:
//will trigger when you press on the second btn
break;
case R.id.btn3:
//will trigger when you press on the third btn
break;
case R.id.btn4:
//will trigger when you press on the fourth btn
break;
}
}
}
此行分配的每个按钮的事件功能
btn1.setOnClickListener(this);
按下该按钮将触发“全局”(活动中的View.onClickListener方法),您可以使用view.getId()功能来区分按钮