切换按钮可更改android应用布局的背景颜色

时间:2019-07-03 06:57:27

标签: java android togglebutton

切换按钮可更改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 个答案:

答案 0 :(得分:1)

请在此处使用约束布局 RelativeLayout currentLayout = (RelativeLayout) findViewById(R.id.main_layout);而非RelativeLayout,因为您在XML文件中使用了约束布局;)

答案 1 :(得分:0)

根据您的crush报告:您正在XML文件中使用ConstraintLayout。另一方面,您正在Java文件中初始化RelativeLayout

您必须在两个文件中同时使用相同的布局。因此,将XML文件布局更改为RelativeLayout而不是ConstraintLayout或在RelativeLayout的Java文件ConstraintLayout中更改ConstraintLayout

请记住两种布局都应该相同。

希望它会对您有所帮助。

谢谢

答案 2 :(得分:0)

谢谢您的输入。 一旦我将布局更改为“约束”,它就可以正常工作。

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