首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >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

复制
相关文章
linux 安装python3.8.2
前言:python下载地址https://www.python.org/ftp/python
编程那点事
2023/02/25
1.2K0
Python 3.8.2软件下载和安装教程
Python 3.8.2是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
肉肉软件安装
2022/11/21
1.6K0
Python 3.8.2软件下载和安装教程
两天时间,安装kivy环境,python
  由于手柄一直比较残次,所以打算用手机来控制小车,但是问题又来了,我不会java,怎么写APP?
py3study
2020/01/07
1.1K0
在Linux上安装python
和在Windows安装Python的教程一样,安装python要配置环境pyenv,只是python要手工使用Linux命令安装,使用这种方法最好有一点Linux基础。由于笔者使用这种方法没有安装成功,就搬砖给大家看一下了
Py_lover
2018/07/26
4.2K0
在windows上安装Python cr
出现这个问题是因为为安装过程中需要libeay32.dll,ssleay32.dll
py3study
2020/01/10
2.2K0
在mac上安装Xgboost Python库
本文介绍了在mac系统上如何安装XGBoost Python库。文章首先介绍了使用pip install xgboost时出现的问题,然后介绍了使用Github源代码安装XGBoost的步骤。最后,作者通过运行build.sh脚本成功安装了XGBoost。
MachineLP
2018/01/09
2.5K0
在Linux上安装Python3
1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2.下载Python3 # wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz 3.安装python3   我个人习惯安装
人生不如戏
2018/05/30
1.7K0
Python指南 | 在linux上安装python3.7
今天在腾讯云服务器上安装了python3,又学到的知识。 如何在Linux环境中安装Python3.7.0以上 1.下载python cd /home wget http://cdn.npm.taobao.org/dist/python/3.7.4/Python-3.7.4.tgz 使用了wget软件,从指定URL下载文件 2.解压Python安装文件 tar -zxvf Python-3.7.4.tgz tar是Linux自带的解压命令 3.安装编译Python3.7以上的源文件所需的编译环境 yum i
Justlovesmile
2021/12/14
10.2K2
Python 界面工具--Kivy 初尝试
Kivy是一个开源工具包能够让使用相同源代码创建的程序能跨平台运行。它主要关注创新型用户界面开发,如:多点触摸应用程序。Kivy还提供一个多点触摸鼠标模拟器, Kivy基于Cython(C extensions for Python)构建,所以开发需要懂得Python语言。当前支持的平台包括:Linux、Windows、Mac OS X和Android。这样可以用python开发各种平台的包。
雷子
2021/03/15
1.9K0
Python 界面工具--Kivy 初尝试
在Ubuntu 18.04 LTS上安装Python 3.7
Python是最受欢迎和随需应变的通用编程语言之一。它是一种解释性的高级编程语言,支持多种编程范例,包括过程式,面向对象和函数式编程。由于其全面的标准库,它通常被描述为“py自带着电池”。
用户6543014
2020/04/02
6.5K0
通过Kivy将Python文件打包成apk
流行的用户界面,比如多点触摸等等。且Kivy 可以运行于 Windows, Linux,
全栈程序员站长
2022/08/31
3.7K0
在Centos7上安装Python-de
在安装audiotoolsmake install出现问题 running build_ext building 'audiotools.pcm' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -
py3study
2020/01/09
8750
在CentOS7.0上安装Python3
  刚开始研究python,一直在纠结是学2.0还是3.0,听说2.0版本将在2020年后被淘汰,于是就有了安装3.0的需求。
py3study
2020/01/09
6850
在 Ubuntu 上从源码编译安装 Python 3.8
04.切换到 Python 源码目录,并且执行configure脚本,他会执行一系列检测,并且确保所有依赖都在你的系统上准备好了:
一个会写诗的程序员
2022/09/28
2.4K0
在Windows上安装Jenkins
apache-tomcat/bin目录下的startup.bat在windows上启动。
清菡
2020/12/02
2.6K0
在Windows上安装Jenkins
​在tinycolinux上安装chrome
本文关键字:chrome as desktop shell,uniform web os for admin and user
minlearn
2020/09/28
2.8K0
在centos上安装字体
在文件管理器中打开字体文件,可以看到右上方有install按钮,点击即可安装。 缺点是暂时没有找到删除的方法,也不知道安装到了哪个路径下。
羽翰尘
2019/11/20
2.1K0
在Linux上安装Kibana
首先要做的:关闭防火墙。 centos7用“service firewalld stop” centos6用“service iptables stop”
星哥玩云
2022/07/14
2.7K0
在 Ubuntu 上安装 MySQL
在 Ubuntu 中安装 Mysql 最方便方式是用 MySQL 自己的 APT 仓库。 APT 仓库中包含了 MySQL 的服务器和工具相关的软件。我们需要将此 MySQL APT 仓库添加到系统的包源列表中。
不惑
2023/09/23
1.4K0
点击加载更多

相似问题

在Python3.8.2中安装Kivy出现错误

16

在mac上安装模块Python 3.8.2

12

如何在python 3.8.2上安装urllib.request

189

在pip上的ubuntu python 3.8.2上安装Turicreate时出错

293

试图在Windows 7上安装Python3.8.2时出错

11
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档