Как восстановить состояние XML после вызова метода в Android - PullRequest
0 голосов
/ 21 мая 2018

Код:

 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();

        }
    });
    }
 }

Просто пытаюсь создать приложение для викторины ... запрос на обновление вызывается после каждого нажатия кнопки (после выбора пользователем ответа) ... кнопка становится зеленой, если она правильной, и красной, если еенеправильно ... но этот цвет остается даже после перехода к следующему вопросу ... как мне сделать так, чтобы получить цвет, который упоминается в файле XML ... это цвет кнопки по умолчанию

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Самый простой способ - добавить это к вашему 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-файле.

0 голосов
/ 21 мая 2018

внутри вопроса об обновлении, сбросьте цвет всех текстовых представлений, потому что вы повторно используете эти текстовые просмотры, и состояние текстовых представлений останется прежним, поэтому используйте

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) {
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...