Во-первых, пожалуйста, не закрывайте / не блокируйте вопрос и не помечайте его как дубликат.Вопрос в другом сценарии.Я полностью прочитал все в течение почти 20 дней и сейчас спрашиваю.
У меня есть 2 счетчика, заполненные из JSON (значения 2-го счетчика основаны на 1-м).Если я нажму кнопку «Отправить» после выбора значений счетчика, я получу список, загруженный элементами из JSON.
Итак, концепция, которую я предположил, такова:
Я заполнил счетчики, затем, когда я нажимаю "Отправить", значения счетчиков отправляются туда на веб-сервис PHP, я написал SQL-запрос для получения данных на основена этих счетчиках.
Проблема в том, что я не могу получить результат.После нажатия кнопки «Отправить» ошибка отсутствует, но я не могу перейти к просмотру списка.
Вот фрагмент кода, относящийся к моей проблеме.
Веб-сервис PHP:
<?php
.......
.......
.......
if(isset($_POST['converternumber']) && isset($_POST['zonenumber']))
{
$n_converternumber = $_POST["converternumber"];
$n_zonenumber = $_POST["zonenumber"];
//$n_converternumber= "2";
}
$sql_query= "select codeid from addcode where converternumber like '%".$n_converternumber."%' and zonenumber like '%".$n_zonenumber."%'";
$result= mysqli_query($connectionn,$sql_query);
..........
..........
?>
В mainActivity я могу заполнить 2 счетчика, я просто вставляю код метода onClick кнопки отправки:
public void addflrsurvey(View view){
st = stateSpinner.getSelectedItem().toString();
ci = citiesSpinner.getSelectedItem().toString();
String method = "listofcodes";
BackgroundTaskcode backgroundTaskcode = new BackgroundTaskcode(this);
backgroundTaskcode.execute(method, st, ci);
finish();
}
И у класса BackgroundTaskcode есть класс doInBackground следующим образом
try {
URL url = new URL(flr_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream os = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
String data = URLEncoder.encode("converternumber", "UTF-8")+"="+URLEncoder.encode(st,"UTF-8")+"&"+
URLEncoder.encode("zonenumber", "UTF-8")+"="+URLEncoder.encode(ci,"UTF-8");
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
os.close();
InputStream IS = httpURLConnection.getInputStream();
IS.close();
return "wait....";
.................}
Есть еще один класс Java с именем codelist
, в котором есть код для заполнения списка из файла json, который работает нормально, но я хочу, чтобы онбыть основан на выборе значения счетчиков.
Снова я искренне прошу не блокировать меня и не закрывать это.Заранее спасибо
РЕДАКТИРОВАТЬ: Logcat
11-28 14:58:32.040 3831-3880/com.example.app.spinnerdemo E/Json response: []����������������������������������������������
11-28 14:58:32.065 3831-3881/com.example.app.spinnerdemo E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: com.example.app.spinnerdemo, PID: 3831
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.widget.Toast$TN.<init>(Toast.java:345)
at android.widget.Toast.<init>(Toast.java:101)
at android.widget.Toast.makeText(Toast.java:259)
at com.example.app.spinnerdemo.codelist$FetchDataTask.doInBackground(codelist.java:61)
at com.example.app.spinnerdemo.codelist$FetchDataTask.doInBackground(codelist.java:43)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
11-28 14:58:32.338 1664-3178/system_process W/ActivityManager: Force finishing activity com.example.app.spinnerdemo/.codelist
11-28 14:58:32.393 1664-3178/system_process W/ActivityManager: Force finishing activity com.example.app.spinnerdemo/.MainActivity
Ссылка на полный КОД