如何更改widget的状态从check到uncheck?

时间:2016-05-11 12:41:04

标签: android

我想从thingspeak接收数据并自动将切换状态从检查更改为未检查,反之亦然。
这是我的代码,但它不起作用,只是可以设置文本但不能改变状态。
 请帮帮我!

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

        button = (Button) findViewById(R.id.button);

        myswitch1 = (Switch) findViewById(R.id.switch1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Thread t = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        postdata2();
                    }
                });
                t.start();
                now_da1.setText(get_da1);
                if(get_dk1 == "1") {
                      myswitch1.setChecked(False);
                }   
                else if (get_dk1 =="0") {
                      myswitch1.setChecked(True);
                }
            }
        });

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

        public void postdata2() {
        HttpRequest mReq = new HttpRequest();
        get_t1 =    mReq.sendGet("https://thingspeak.com/channels/106453/field/1/last");

        get_da1 = get_t1.substring(0, 2);
        get_dk1 = get_t1.substring(3, 3);
        Log.d(myGet, get_dk1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

2 个答案:

答案 0 :(得分:0)

使用此myswitch1.setChecked(false);取消选中,myswitch1.setChecked(true);进行检查。

快乐编码:)

答案 1 :(得分:0)

比较两个Strings的值时,请始终使用比较equals()方法,而不是使用比较对象引用的==

例如:

String first = "1";
String second = "1";

first == second将返回false,因为它们没有引用同一个对象。但是,first.equals(second)将返回true,因为两个Strings的值相同。

您可以尝试用以下方法替换条件:

if (get_dk1.equals("1")) {
    myswitch1.setChecked(false);
} else if (get_dk1.equals("0")) {
    myswitch1.setChecked(true);
}