Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >toast.maketext不更新值

toast.maketext不更新值
EN

Stack Overflow用户
提问于 2018-09-15 16:05:43
回答 1查看 105关注 0票数 0

当我使用switch2或任何其他开关时,Toast.maketext会连续显示“Light1现在开着.”或者“Light1现在关机了”,如果是there语句还是HTTPRequestTasks,有什么问题吗?我正在尝试使用这个应用程序访问NodeMCU。我可以通过网页浏览器通过输入url来控制NodeMCU,但是在应用程序中它被switch1卡住了。以下是此应用程序的java代码:

代码语言:javascript
运行
AI代码解释
复制
package com.example.nodemcu.aoatechapp;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; 
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.Toast;
import android.support.v7.app.AlertDialog;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference;
import java.net.URI;
import java.net.URISyntaxException;

public class BedRoom1Activity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{

final Context context = this;
private Switch switch1, switch2, switch3, switch4;
String address = "aoatech.ddns.net";

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

    switch1 = (Switch)findViewById(R.id.switch1);
    switch1.setOnCheckedChangeListener(this);
    switch2 = (Switch)findViewById(R.id.switch2);
    switch2.setOnCheckedChangeListener(this);
    switch3 = (Switch)findViewById(R.id.switch3);
    switch3.setOnCheckedChangeListener(this);
    switch4 = (Switch)findViewById(R.id.switch4);
    switch4.setOnCheckedChangeListener(this);
}

public void onCheckedChanged (CompoundButton compoundButton, boolean b){
    String serverAdress = address + ":3000";
    String ledStatus;
    if (switch1.isChecked()) {
        ledStatus = "1";
        Toast.makeText(BedRoom1Activity.this, "Light 1 is now Turned On...", Toast.LENGTH_SHORT).show();
        HttpRequestTask1 R1 = new HttpRequestTask1(serverAdress,(BedRoom1Activity) context);
        R1.execute(ledStatus);
    }
    else if (!switch1.isChecked()) {
        ledStatus = "0";
        Toast.makeText(BedRoom1Activity.this, "Light 1 is now Turned Off...", Toast.LENGTH_SHORT).show();
        HttpRequestTask1 R1 = new HttpRequestTask1(serverAdress,(BedRoom1Activity) context);
        R1.execute(ledStatus);
    }
    else if (switch2.isChecked()) {
        ledStatus = "1";
        Toast.makeText(BedRoom1Activity.this, "Light 2 is now Turned On...", Toast.LENGTH_SHORT).show();
        HttpRequestTask2 R2 = new HttpRequestTask2(serverAdress,(BedRoom1Activity) context);
        R2.execute(ledStatus);
    }
    else if (!switch2.isChecked()) {
        ledStatus = "0";
        Toast.makeText(BedRoom1Activity.this, "Light 2 is now Turned Off...", Toast.LENGTH_SHORT).show();
        HttpRequestTask2 R2 = new HttpRequestTask2(serverAdress,(BedRoom1Activity) context);
        R2.execute(ledStatus);
    }
    else if (switch3.isChecked()) {
        ledStatus = "1";
        Toast.makeText(BedRoom1Activity.this, "Fan is now Turned On...", Toast.LENGTH_SHORT).show();
        HttpRequestTask3 R3 = new HttpRequestTask3(serverAdress,(BedRoom1Activity) context);
        R3.execute(ledStatus);
    }
    else if (!switch3.isChecked()) {
        ledStatus = "0";
        Toast.makeText(BedRoom1Activity.this, "Fan is now Turned Off...", Toast.LENGTH_SHORT).show();
        HttpRequestTask3 R3 = new HttpRequestTask3(serverAdress,(BedRoom1Activity) context);
        R3.execute(ledStatus);
    }
    else if (switch4.isChecked()) {
        ledStatus = "1";
        Toast.makeText(BedRoom1Activity.this, "Socket is now Turned On...", Toast.LENGTH_SHORT).show();
        HttpRequestTask4 R4 = new HttpRequestTask4(serverAdress,(BedRoom1Activity) context);
        R4.execute(ledStatus);
    }
    else if (!switch4.isChecked()) {
        ledStatus = "0";
        Toast.makeText(BedRoom1Activity.this, "Socket is now Turned Off...", Toast.LENGTH_SHORT).show();
        HttpRequestTask4 R4 = new HttpRequestTask4(serverAdress,(BedRoom1Activity) context);
        R4.execute(ledStatus);
    }
}
private static class HttpRequestTask1 extends AsyncTask<String, Void, String> {

    private String serverAdress;
    private String serverResponse = "";
    AlertDialog dialog;
    private WeakReference<BedRoom1Activity> activityReference;
    private HttpRequestTask1(String serverAdress, BedRoom1Activity context) {
        this.serverAdress = serverAdress;
        this.activityReference = new WeakReference<>(context);
        dialog = new AlertDialog.Builder(activityReference.get())
                .setTitle("HTTP Response from Ip Address:")
                .setCancelable(true)
                .create();
    }
    @Override
    protected String doInBackground(String... params) {
        dialog.setMessage("Data sent , waiting response from server...");
        if (!dialog.isShowing()) {
            dialog.show();
        }
        String val = params[0];
        final String url = "http://" + serverAdress + "/light1/" + val;
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet getRequest = new HttpGet();
            getRequest.setURI(new URI(url));
            HttpResponse response = client.execute(getRequest);
            InputStream inputStream = null;
            inputStream = response.getEntity().getContent();
            BufferedReader bufferedReader =
                    new BufferedReader(new InputStreamReader(inputStream));
            serverResponse = bufferedReader.readLine();
            inputStream.close();
        } catch (URISyntaxException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (IOException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        }
        return serverResponse;
    }
    @Override
    protected void onPostExecute(String s) {
        dialog.setMessage(serverResponse);
        if (!dialog.isShowing())
            dialog.show();
    }
    @Override
    protected void onPreExecute() {
        dialog.setMessage("Sending data to server, please wait...");
        if (!dialog.isShowing())
            dialog.show();
    }
}

private static class HttpRequestTask2 extends AsyncTask<String, Void, String> {

    private String serverAdress;
    private String serverResponse = "";
    AlertDialog dialog;
    private WeakReference<BedRoom1Activity> activityReference;
    private HttpRequestTask2(String serverAdress, BedRoom1Activity context) {
        this.serverAdress = serverAdress;
        this.activityReference = new WeakReference<>(context);
        dialog = new AlertDialog.Builder(activityReference.get())
                .setTitle("HTTP Response from Ip Address:")
                .setCancelable(true)
                .create();
    }
    @Override
    protected String doInBackground(String... params) {
        dialog.setMessage("Data sent , waiting response from server...");
        if (!dialog.isShowing()) {
            dialog.show();
        }
        String val = params[0];
        final String url = "http://" + serverAdress + "/light2/" + val;
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet getRequest = new HttpGet();
            getRequest.setURI(new URI(url));
            HttpResponse response = client.execute(getRequest);
            InputStream inputStream = null;
            inputStream = response.getEntity().getContent();
            BufferedReader bufferedReader =
                    new BufferedReader(new InputStreamReader(inputStream));
            serverResponse = bufferedReader.readLine();
            inputStream.close();
        } catch (URISyntaxException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (IOException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        }
        return serverResponse;
    }
    @Override
    protected void onPostExecute(String s) {
        dialog.setMessage(serverResponse);
        if (!dialog.isShowing())
            dialog.show();
    }
    @Override
    protected void onPreExecute() {
        dialog.setMessage("Sending data to server, please wait...");
        if (!dialog.isShowing())
            dialog.show();
    }
}

private static class HttpRequestTask3 extends AsyncTask<String, Void, String> {

    private String serverAdress;
    private String serverResponse = "";
    AlertDialog dialog;
    private WeakReference<BedRoom1Activity> activityReference;
    private HttpRequestTask3(String serverAdress, BedRoom1Activity context) {
        this.serverAdress = serverAdress;
        this.activityReference = new WeakReference<>(context);
        dialog = new AlertDialog.Builder(activityReference.get())
                .setTitle("HTTP Response from Ip Address:")
                .setCancelable(true)
                .create();
    }
    @Override
    protected String doInBackground(String... params) {
        dialog.setMessage("Data sent , waiting response from server...");
        if (!dialog.isShowing()) {
            dialog.show();
        }
        String val = params[0];
        final String url = "http://" + serverAdress + "/fan/" + val;
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet getRequest = new HttpGet();
            getRequest.setURI(new URI(url));
            HttpResponse response = client.execute(getRequest);
            InputStream inputStream = null;
            inputStream = response.getEntity().getContent();
            BufferedReader bufferedReader =
                    new BufferedReader(new InputStreamReader(inputStream));
            serverResponse = bufferedReader.readLine();
            inputStream.close();
        } catch (URISyntaxException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (IOException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        }
        return serverResponse;
    }
    @Override
    protected void onPostExecute(String s) {
        dialog.setMessage(serverResponse);
        if (!dialog.isShowing())
            dialog.show();
    }
    @Override
    protected void onPreExecute() {
        dialog.setMessage("Sending data to server, please wait...");
        if (!dialog.isShowing())
            dialog.show();
    }
}

private static class HttpRequestTask4 extends AsyncTask<String, Void, String> {

    private String serverAdress;
    private String serverResponse = "";
    AlertDialog dialog;
    private WeakReference<BedRoom1Activity> activityReference;
    private HttpRequestTask4(String serverAdress, BedRoom1Activity context) {
        this.serverAdress = serverAdress;
        this.activityReference = new WeakReference<>(context);
        dialog = new AlertDialog.Builder(activityReference.get())
                .setTitle("HTTP Response from Ip Address:")
                .setCancelable(true)
                .create();
    }
    @Override
    protected String doInBackground(String... params) {
        dialog.setMessage("Data sent , waiting response from server...");
        if (!dialog.isShowing()) {
            dialog.show();
        }
        String val = params[0];
        final String url = "http://" + serverAdress + "/socket/" + val;
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet getRequest = new HttpGet();
            getRequest.setURI(new URI(url));
            HttpResponse response = client.execute(getRequest);
            InputStream inputStream = null;
            inputStream = response.getEntity().getContent();
            BufferedReader bufferedReader =
                    new BufferedReader(new InputStreamReader(inputStream));
            serverResponse = bufferedReader.readLine();
            inputStream.close();
        } catch (URISyntaxException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (IOException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        }
        return serverResponse;
    }
    @Override
    protected void onPostExecute(String s) {
        dialog.setMessage(serverResponse);
        if (!dialog.isShowing())
            dialog.show();
    }
    @Override
    protected void onPreExecute() {
        dialog.setMessage("Sending data to server, please wait...");
        if (!dialog.isShowing())
            dialog.show();
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-15 16:25:52

请注意:

代码语言:javascript
运行
AI代码解释
复制
if (switch1.isChecked()) { 

代码语言:javascript
运行
AI代码解释
复制
else if (!switch1.isChecked()) {

所有可能的条件都包含在这两个条件表达式中!

代码语言:javascript
运行
AI代码解释
复制
switch1.isChecked()

等于tureflase,所以

代码语言:javascript
运行
AI代码解释
复制
Toast.makeText(BedRoom1Activity.this, "Light 1 is now Turned On...", Toast.LENGTH_SHORT).show();

当然被处决了!以及其他分支被省略。

你可以写“如果”和“其他”来判断每一种状态。例如:

代码语言:javascript
运行
AI代码解释
复制
if (switch1.isChecked()) {

}else{

}


if (switch2.isChecked()) {

}else{

}

编辑了--您设置了多个CompoundButton侦听器,因此您可以直接检查哪一种状态发生了如下更改:

代码语言:javascript
运行
AI代码解释
复制
switch (compoundButton.getId()) {
    case R.id.switch1:
        if (switch1.isChecked()) {

        }else{

        }
        break;
    case R.id.switch2:

        break;
    }
    .....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52349860

复制
相关文章
如何获取云API密钥?
云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。以下是具体操作步骤:
腾讯云@移动安全
2019/01/18
82.9K42
如何获取云API密钥?
码云(gitee)配置SSH密钥
git 上传错误This oplation equires one of the flowi vrsionsot the NET Framework:.NETFramework
汀丶人工智能
2022/12/01
3.2K0
码云(gitee)配置SSH密钥
OLAINDEX – 获取OneDrive应用 ID 和密钥
在近日,微软调整了 OneDrive 应用机密的方法。在调整过后,需要自行在Azure页面注册应用程序。这相比之前的「一键操作」来说似乎变得有些麻烦,因此我们准备了这篇文章。
怪兽
2022/10/04
2.9K0
OLAINDEX –  获取OneDrive应用 ID 和密钥
密钥用法 增强密钥用法 证书类型
增强密钥用法: OpenSSL 增强密钥用法:
BUG弄潮儿
2022/06/30
2.3K0
密钥详解
在之前的文章中,我们讲到了对称密码,公钥密码,消息认证码和数字签名等密码学的技术,这些技术中都使用到了一个叫做密钥的东西。
程序那些事
2020/07/08
2.3K0
非对称密钥沉思系列(4):密钥交换
密钥交换,也有称作密钥协商,这套机制,最主要的作用是用来得到通信双方的临时会话密钥。
bowenerchen
2023/01/04
7.2K13
非对称密钥沉思系列(4):密钥交换
windows10产品密钥永久(windows激活密钥)
这就是Windows Key Viewer变得有用的时候,因为可以轻松显示产品密钥。
全栈程序员站长
2022/07/28
6.8K0
windows10产品密钥永久(windows激活密钥)
共享密钥加密与公开密钥加密
加密数据的方法可以分为两种:加密和解密都使用相同密钥的“共享密钥加密”和分别使用不同密钥的“公开密钥加密”。
神奇的程序员
2022/04/10
2.9K0
共享密钥加密与公开密钥加密
【计算机网络】网络安全 : 对称密钥分配 ( 密钥分配 | 密钥分配中心 KDC | 对称密钥分配 | 密钥分配协议 | Kerberos 协议 )
③ 密钥分配 : 是管理中的最重要的问题 , 密钥需要通过 安全通道 进行分配操作 ;
韩曙亮
2023/03/28
6.9K0
【计算机网络】网络安全 : 对称密钥分配 ( 密钥分配 | 密钥分配中心 KDC | 对称密钥分配 | 密钥分配协议 | Kerberos 协议 )
vs2012密钥_ultimate2012产品密钥
Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC;KCW6-BPFPF-BT8C9-7DCTH-QXGWC
全栈程序员站长
2022/11/04
3.2K0
linux 密钥登录
使用命令: ssh-keygen -t rsa -b 4096 -C “youremail@qq.com”
CRMEB商城源码
2022/06/21
5.3K0
SSH 密钥类型
GitHub 改变了他们的安全协议,不再允许使用使用 SHA-1 加密算法的 RSA 密钥进行访问,而我目前使用 ssh 默认策略生成的就是这种类型的密钥,结果就是无法提交代码。
宋天伦
2023/10/21
7350
vs2012ultimate密钥_visual studio 2012产品密钥
Visual Studio Express 2012 for Windows Desktop
全栈程序员站长
2022/11/04
1.8K0
office2013产品密钥_office365激活密钥
http://zhidao.baidu.com/question/427413727.html
全栈程序员站长
2022/11/07
2.1K0
1.11 PuTTY密钥认证
修改字体 先选择用户,然后load下,去修改字体,修改后记得save,然后open打开,秘钥用的是一对字符串 秘钥认证 秘钥认证和密码认证,都是一种认证方式。而秘钥使用一对加密的字符串(在客户端放私钥,在服务器上放公钥,私钥和公钥配成一对就能通过) 首先打开putty,然后打开putty文件中的puttygen,然后点击Generate按钮(记得移动鼠标和键盘,否则随机生成字符串较慢); 在框中的是公钥(较长),私钥(较短),他们就是一堆随机的字符串 然后设置密码(也可为空) ——>一旦私钥丢失,会被别人尝
运维小白
2022/01/06
1.5K0
AutoCAD 2023激活密钥
AutoCAD 2023是一款电脑3D制图软件,AutoCAD 2023版本拥有着非常强大的渲染、绘图和三维打印功能,还提供了动态块、文本设定、数据提取、三维导航、截面平面、DWG 比较、云存储连接等完整的功能。
Mac软件分享
2022/08/12
3K0
AutoCAD 2023激活密钥
Mac 生成 SSH 密钥
昨天试用 cursor 时想推送代码到 github ,遇到问题,该用 ssh 方式推送,提示没有配置公钥。
明明如月学长
2023/04/11
3K0
Mac 生成 SSH 密钥
PHP实现码云Gitee的WebHook密钥验证算法
用户通过配置不公开的 WebHook 密钥,在请求时对请求内容签名,服务端在收到请求后以同样的密钥进行签名验证,以确认收到的请求完整且可信任。
沈唁
2020/08/15
1.1K0
PHP实现码云Gitee的WebHook密钥验证算法
Office 2016激活密钥专业增强版如何获取?
Microsoft Office2016版本系统是微软发布的办公软件,我们在使用office软件的时候,会遇到激活问题,激活的解决方法就是通过购买office 2016永久激活密钥来激活office2016系统,我们只有使用office 2016永久激活密钥激活系统,我们才可以放心使用office办公软件。而且,最好是Office中文网购买office 2016永久激活密钥的正版密钥,这样更有保障。
office小助手
2022/05/03
5.3K0
Office 2016激活密钥专业增强版如何获取?
HTTPS 和 SSL/TLS 协议:密钥交换(密钥协商)算法及其原理
前一篇介绍了 SSL/TLS 的身份认证机制。这个机制是为了防止攻击者通过【篡改】网络传输数据,来假冒身份,以达到“中间人攻击/MITM”的目的。   而今天要聊的“密钥协商机制”是:(在身份认证的前提下)如何规避【偷窥】的风险。   通俗地说,即使有攻击者在偷窥你与服务器的网络传输,客户端(client)依然可以利用“密钥协商机制”与服务器端(server)协商出一个用来加密应用层数据的密钥(也称“会话密钥”)。
全栈程序员站长
2021/06/17
10.3K0

相似问题

从android密钥码到java密钥码

22

从CKEditor的扫描码中获取密钥

10

密钥码13和密钥码10不工作

11

使用shiftkey键获取密钥码

30

Javascript密钥码

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档