我想在几秒钟后更改为按钮的颜色。我做了一个测验应用程序,当你回答问题时,按钮会变为绿色,当你回答错误的问题时,它会变成红色。现在我已经创建了这个,但它不起作用,因为它为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();
}
答案 0 :(得分:2)
将您的代码更改为
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
类提供的方法要求您覆盖无参数方法。
答案 1 :(得分:2)
您需要在@Override
方法上添加run
注释,并从参数中删除View
个对象。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setBackgroundResource(R.drawable.button_bg_rounded_corners);
updateQuestion();
}
}, 10000);