如何在android

时间:2018-05-21 08:20:22

标签: java android database firebase

代码:

 private void updateQuestion() {
    mDatabaseReference.child("Users").child(RecieversId).child("Quiz").child("Question" + mQuestionNumber).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String question = dataSnapshot.child("Question").getValue().toString();
            answer = dataSnapshot.child("Answer").getValue().toString();
            option1 = dataSnapshot.child("Option1").getValue().toString();
            option2 = dataSnapshot.child("Option2").getValue().toString();
            option3 = dataSnapshot.child("Option3").getValue().toString();
            option4 = dataSnapshot.child("Option4").getValue().toString();
            que.setText(question);
            opt1.setText(option1);
            opt2.setText(option2);
            opt3.setText(option3);
            opt4.setText(option4);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

    opt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mQuestionNumber++;
            updateQuestion();
            qn.setText("Quesion : " + mQuestionNumber);
            if (option1.equals(answer)) {
                opt1.setBackgroundColor(Color.GREEN);
                mScore++;
                sco.setText("Score : " + mScore);
                updateQuestion();
            } else
                opt1.setBackgroundColor(Color.RED);
            sco.setText("Score : " + mScore);
            updateQuestion();
        }
    });
    opt2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mQuestionNumber++;
            updateQuestion();
            qn.setText("Quesion : " + mQuestionNumber);
            if (option2.equals(answer)) {
                opt2.setBackgroundColor(Color.GREEN);
                mScore++;
                sco.setText("Score : " + mScore);
                updateQuestion();
            } else
                opt2.setBackgroundColor(Color.RED);
            sco.setText("Score : " + mScore);
            updateQuestion();
        }
    });
    opt3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mQuestionNumber++;
            qn.setText("Quesion : " + mQuestionNumber);
            if (option3.equals(answer)) {
                opt3.setBackgroundColor(Color.GREEN);
                mScore++;
                sco.setText("Score : " + mScore);
                updateQuestion();
            } else
                opt3.setBackgroundColor(Color.RED);
            sco.setText("Score : " + mScore);
            updateQuestion();
        }
    });
    opt4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mQuestionNumber++;
            qn.setText("Quesion : " + mQuestionNumber);
            if (option4.equals(answer)) {
                opt4.setBackgroundColor(Color.GREEN);
                mScore++;
                sco.setText("Score : " + mScore);
                updateQuestion();
            } else
                opt4.setBackgroundColor(Color.RED);
            sco.setText("Score : " + mScore);
            updateQuestion();

        }
    });
    }
 }

只是尝试制作一个测验应用程序...每次按钮点击后(在用户选择答案后)调用updatequestion ...如果正确,则按钮变为绿色,如果错误,则按钮变为红色......但是该颜色仍然保持不变到下一个问题...如何使它获得xml文件中提到的颜色...这是默认的按钮颜色

2 个答案:

答案 0 :(得分:2)

内部更新问题,重置所有textview的颜色,因为您正在重复使用这些textview,并且textview的状态将保持不变,因此请使用

mDatabaseReference.child("Users").child(RecieversId).child("Quiz").child("Question" + mQuestionNumber).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String question = dataSnapshot.child("Question").getValue().toString();
            answer = dataSnapshot.child("Answer").getValue().toString();
            option1 = dataSnapshot.child("Option1").getValue().toString();
            option2 = dataSnapshot.child("Option2").getValue().toString();
            option3 = dataSnapshot.child("Option3").getValue().toString();
            option4 = dataSnapshot.child("Option4").getValue().toString(); 
            //-------------------
            opt1.setBackgroundColor(Color.TRANSPARENT);
            opt2.setBackgroundColor(Color.TRANSPARENT);
            opt3.setBackgroundColor(Color.TRANSPARENT);
            opt4.setBackgroundColor(Color.TRANSPARENT);
            //-------------------
            que.setText(question);
            opt1.setText(option1);
            opt2.setText(option2);
            opt3.setText(option3);
            opt4.setText(option4);               
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

答案 1 :(得分:2)

最简单的方法是将其添加到onDataChanged()方法中:

opt1.setBackgroundColor(<default_color_reference>);
opt2.setBackgroundColor(<default_color_reference>);
opt3.setBackgroundColor(<default_color_reference>);
opt4.setBackgroundColor(<default_color_reference>);

设置文本后立即生效。并确保<default_color_reference>与您想要的原始背景颜色相匹配,假设您在XML文件中专门设置了它。