首页 > 解决方案 > Android 中的 Getter 和 Setter

问题描述

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

我在这里做错了什么?

标签: javaandroidandroid-studio

解决方案


您正在使用不同的对象来设置和获取价值。您只需要声明一个 GetSwitch 对象,它必须如下所示。

   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+"");
       }
   });

推荐阅读