[英]Highlight effect on Button's onClick is gone after changing background to a color
[英]Changing a button's background after a few seconds
几秒钟后,我想更改按钮的颜色。 我制作了一个测验应用程序,当您正确回答问题时,按钮将变为绿色,而当您回答错误问题时,按钮将变为红色。 现在,我已经创建了它,但是它不起作用,因为它为Runnable给出了此错误:
类:从Runnable派生的匿名类必须声明为抽象,或在Runnable中实现抽象方法
run()
。
那么,这里出了什么问题?
if (mQuestionNumber == QuestionLibrary.mQuestionsFrankrijk.length) {
Intent i = new Intent(QuizActivityFrankrijk.this,
QuizResultaat.class);
Bundle bundle = new Bundle();
bundle.putInt("finalScore", mScoreFrankrijk);
i.putExtras(bundle);
QuizActivityFrankrijk.this.finish();
startActivity(i);
} else {
view.setBackgroundResource(R.drawable.button_fout);
Toast.makeText(QuizActivityFrankrijk.this, "Fout", Toast.LENGTH_SHORT).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run(View view) {
view.setBackgroundResource(R.drawable.button_bg_rounded_corners);
updateQuestion();
}
}, 10000);
updateQuestion();
}
将您的代码更改为
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
public void run() { //Remove the argument
view.setBackgroundResource(R.drawable.button_bg_rounded_corners);
updateQuestion();
}
}, 10000);
问题是,您没有覆盖正确的run()
方法。 Runnable
类提供的方法要求您重写无参数方法。
您需要在run
方法上添加@Override
批注,并从参数中删除View
对象。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setBackgroundResource(R.drawable.button_bg_rounded_corners);
updateQuestion();
}
}, 10000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.