Android中的Getter和Setter

公鸡:

在我的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;
    }
}

我在这里做错了什么?

Sakibur Ra​​hman:

您正在使用同一类的两个单独的实例来获取相同的属性。在更新实例的属性时,更改属于该实例。您可以执行以下操作:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章