toast.maketext not updating value
toast.maketext not updating value
When i use switch2 or any other switch Toast.maketext continuously showing "Light 1 is now on..." or "Light 1 is now Off" is there any problem with if else statement or HTTPRequestTasks? i'm trying to access NodeMCU using this application. I am able to control NodeMCU through web browser by typing url but in application it is stuck on switch1. Following is the java code for this application:
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();
1 Answer
1
please notice:
if (switch1.isChecked()) {
and
else if (!switch1.isChecked()) {
All possible conditions are included in these two condition express!
switch1.isChecked()
either equal ture or flase, so
ture
flase
Toast.makeText(BedRoom1Activity.this, "Light 1 is now Turned On...", Toast.LENGTH_SHORT).show();
certainly executed! and other branch are omitted.
You could write if and elseif for judging each swithch status. such as:
if (switch1.isChecked())
else
if (switch2.isChecked())
else
Edited
You set multiple CompoundButton listener,so you could firstyly check which one status changed like this:
switch (compoundButton.getId())
case R.id.switch1:
if (switch1.isChecked())
else
break;
case R.id.switch2:
break;
.....
yes! please think the logic carefully again~
– navylover
Sep 16 '18 at 0:32
i used if and else and those all switches which were off just popped up all at once and caused application crash. I tried my best on this code when i gave up then i posted here spent around 4 hours on it but unable to catch the error.
– Ahmed Ansari
Sep 16 '18 at 0:37
Okie! I will try this i'm sleepy now :D well thanks for your response ☺
– Ahmed Ansari
Sep 16 '18 at 0:56
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy
you mean i should use if and else only??
– Ahmed Ansari
Sep 16 '18 at 0:30