切换按钮可更改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);
}
}
});
}
预期结果是背景更改,但是这没有发生,并且此后应用程序崩溃了
答案 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);