几秒钟后更改按钮的背景

时间:2017-09-28 10:15:08

标签: java android

我想在几秒钟后更改为按钮的颜色。我做了一个测验应用程序,当你回答问题时,按钮会变为绿色,当你回答错误的问题时,它会变成红色。现在我已经创建了这个,但它不起作用,因为它为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();

                }

2 个答案:

答案 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);