[英]Getter and Setter in Android
在我的 MainActivity 中,我有一个 Switch 和一个 Button,更改开关状态后,单击按钮后,我想获取开关状态 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+"");
}
});
获取开关
public class GetSwitch{
private boolean setClicked;
public void setSetClicked(boolean setClicked) {
this.setClicked = setClicked;
Log.i("SetSwitch",this.setClicked+"");
}
public boolean isSetClicked() {
return setClicked;
}
}
我在这里做错了什么?
您正在使用不同的 object 来设置和获取值。 您只需要声明一个 GetSwitch object,它必须如下所示。
GetSwitch SP = new GetSwitch();
Switch profession = (Switch) findViewById(R.id.profswitch);
profession.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SP.setSetClicked(isChecked);
}
});
Button profButton = findViewById(R.id.btnSwitchNxt);
profButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean setClicked = SP.isSetClicked();
Log.i("GetSwitch",setClicked+"");
}
});
您正在使用相同 class 的两个单独实例来获取相同的属性。 当您更新实例的属性时,更改属于该实例。 你可以这样做:
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+"");
}
});
请参阅此处,我正在获取并设置同一实例的属性,以便它们不会被更改。 您还可以在 class 的构造函数中定义此实例,并使用this.sw
引用它们作为一个好习惯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.