Android studio Switch setOnCheckedChangeListener参数

时间:2016-01-23 14:51:25

标签: java android android-studio android-switch

=============================================== ============================ 谢谢您的回答!我更改了我的代码并添加了一些TextView来检查我的编码是否有效(如果变量正确变化),但我在“LED开/关”“继电器”和“LED闪烁”下看不到任何值。这有什么问题? :(

private TextView showpin13, showpin5, showLEDblink;


private String pin13 = "";
private String pin5 = "";
private String LEDblink = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_change_status);

    switchPin13 = (Switch) findViewById(R.id.changeLED1);
    switchBlinkPin13 = (Switch) findViewById(R.id.changeLED2);
    switchPin5 = (Switch) findViewById(R.id.changeRELAY);
    viewBlink = (TextView) findViewById(R.id.textView7);

    //임시
    showpin13 = (TextView) findViewById(R.id.showpin13);
    showpin5 = (TextView) findViewById(R.id.showpin5);
    showLEDblink = (TextView) findViewById(R.id.showLEDblink);


    viewBlink.setVisibility(View.INVISIBLE);
    switchBlinkPin13.setVisibility(View.INVISIBLE);


    switchPin13.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (switchPin13.isChecked()) {
                switchBlinkPin13.setVisibility(View.VISIBLE);
                viewBlink.setVisibility(View.VISIBLE);
                pin13 = "1";
            } else {
                pin13 = "0";
                viewBlink.setVisibility(View.INVISIBLE);
                switchBlinkPin13.setVisibility(View.INVISIBLE);
                switchBlinkPin13.setChecked(false);
            }
        }
    });

    switchPin5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (switchPin5.isChecked()) {
                pin5 = "1";
            } else {
                pin5 = "0";
            }
        }
    });

    switchBlinkPin13.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(switchBlinkPin13.isChecked()){
                LEDblink = "1";
            }
            else{
                LEDblink = "0";
            }
        }
    });


    String pinnumber13 = pin13;

    showpin13.setText(String.valueOf(pinnumber13));
    showpin5.setText(String.valueOf(pin5));
    showLEDblink.setText(String.valueOf(LEDblink));
}

enter image description here

3 个答案:

答案 0 :(得分:0)

第一个答案是使String Pin13成为一个全局变量(即在类中声明它的onCreate()) 第二点的答案将取决于你想要完成什么,你想要将它解决为pin.setChecked(false)

答案 1 :(得分:0)

  1. Sting pin13放在onCreate()
  2. 之外
  3. else内添加switchBlinkPin13.setChecked(false);

答案 2 :(得分:0)

String pin13="";//CHANGE HERE
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_status);

switchPin13 = (Switch)findViewById(R.id.changeLED1); //LED switch
switchBlinkPin13 = (Switch)findViewById(R.id.changeLED2); //LED blink
switchPin5 = (Switch)findViewById(R.id.changeRELAY); //Relay switch

switchBlinkPin13.setVisibility(View.INVISIBLE);

final String pin13=""; //or change here 

switchPin13.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(switchPin13.isChecked()){
            switchBlinkPin13.setVisibility(View.VISIBLE);
            pin13 = "1"; //I cannot use pin13 here.
        }
        else {
            pin13 = "0"; //I cannot use pin13 here.
            switchBlinkPin13.setVisibility(View.INVISIBLE);
            //How to set switchBlinkPin13 "OFF"?
        }
    }

但是,您可能希望使用VIEW.GONE而不是INVISIBLE。当你的项目不可见时,它会在你的LayoutUI中占用一些空间,因此屏幕上会有一个无用的空间。如果你使用GONE(你可以把它拿回去,别担心),你就不会面对它。当你的方向指示灯按钮为GONE时,你不必担心它的onClickListener。