在我的MainActivity中,我有一个开关和一个按钮,更改开关状态后,单击按钮后,我要获得开关状态为true / false。为此,出于未知原因,我已经实现了Getter和Setter,一旦设置了值,我总是会得到错误。
主要活动
Switch profession = (Switch) findViewById(R.id.profswitch);
profession.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
GetSwitch SP = new GetSwitch();
SP.setSetClicked(isChecked);
}
});
Button profButton = findViewById(R.id.btnSwitchNxt);
profButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GetSwitch sw = new GetSwitch();
boolean setClicked = sw.isSetClicked();
Log.i("GetSwitch",setClicked+"");
}
});
GetSwitch
public class GetSwitch{
private boolean setClicked;
public void setSetClicked(boolean setClicked) {
this.setClicked = setClicked;
Log.i("SetSwitch",this.setClicked+"");
}
public boolean isSetClicked() {
return setClicked;
}
}
我在这里做错了什么?
您正在使用同一类的两个单独的实例来获取相同的属性。在更新实例的属性时,更改属于该实例。您可以执行以下操作:
Switch profession = (Switch) findViewById(R.id.profswitch);
GetSwitch sw = new GetSwitch();
profession.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
sw.setSetClicked(isChecked);
}
});
Button profButton = findViewById(R.id.btnSwitchNxt);
profButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean setClicked = sw.isSetClicked();
Log.i("GetSwitch",setClicked+"");
}
});
看到这里,我正在获取并设置同一实例的属性,以便它们不会更改。您也可以在类的构造函数中定义此实例,并this.sw
作为一种良好实践来引用它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句