Переключите кнопку, чтобы изменить цвет фона макета приложения для Android - PullRequest
0 голосов
/ 03 июля 2019

Переключить кнопку, чтобы изменить цвет фона макета приложения для Android

Я пытаюсь добавить кнопку переключения на Android Studio, которая может изменить цвет фона макета приложения

    public void perform_action(View v) {
        g = (ToggleButton) findViewById(R.id.toggleButton);
        g.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    RelativeLayout currentLayout = (RelativeLayout) findViewById(R.id.main_layout);
                    currentLayout.setBackgroundColor(Color.RED);
                } else {
                    RelativeLayout currentLayout = (RelativeLayout) findViewById(R.id.main_layout);
                    currentLayout.setBackgroundColor(Color.BLACK);
                }
            }
        });
    }

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

Ответы [ 3 ]

1 голос
/ 03 июля 2019

используйте здесь макет ограничения RelativeLayout currentLayout = (RelativeLayout) findViewById(R.id.main_layout); вместо RelativeLayout, потому что вы используете макет ограничения в своем XML-файле;)

0 голосов
/ 03 июля 2019

Спасибо за ввод.Как только я изменил макет на Constraint, он работал нормально.

if (isChecked) {
                ConstraintLayout currentLayout = (ConstraintLayout) findViewById(R.id.main_layout);
                currentLayout.setBackgroundColor(Color.RED);
            } else {
                ConstraintLayout currentLayout = (ConstraintLayout) findViewById(R.id.main_layout);
                currentLayout.setBackgroundColor(Color.BLACK);
0 голосов
/ 03 июля 2019

Согласно вашему отчету crush: вы используете ConstraintLayout в файле XML. С другой стороны, вы инициализируете RelativeLayout в файле Java.

Вы должны использовать один и тот же макет одновременно в обоих файлах. Поэтому измените макет вашего XML-файла на RelativeLayout вместо ConstraintLayout или измените ConstraintLayout в файле Java ConstraintLayout RelativeLayout.

Просто помните Оба макета должны быть одинаковыми.

Надеюсь, это поможет вам.

Спасибо

...