Мой файл JSON выглядит так: [{"Delay":5}] Мне нужно проверить, не равна ли Delay 0, а затем поместить ее в тост, например (Delay = 5), но когда я запускаю приложение, оно останавливается и ничего не показывает
private void Affiche (){
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_WAITING,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray waiting = new JSONArray(response);
for (int i = 0; i < waiting.length(); i++) {
JSONObject productObject = waiting.getJSONObject(i);
int Delay = productObject.getInt("Delay");
if ( Delay ==0) {
}else {
Toast.makeText(WaitingActivity.this, Delay, Toast.LENGTH_LONG).show();
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(WaitingActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(this).add(stringRequest);
Я ожидаю показать «Задержка = 5», но ничего не показал
Вы отладили до точки? Вы уверены, что слушатель (метод onResponse
) когда-нибудь будет выполнен?
Если под «когда я запускаю остановку приложения» вы имеете в виду, что приложение дает сбой, то это, вероятно, потому, что вы пытаетесь показать int
вместо String
.
Метод makeText()
принимает либо Int
, либо CharSequence
в качестве второго параметра, но int
, который он принимает, относится к идентификатору ресурса. Итак, в вашем случае, поскольку ваш int
не относится к идентификатору ресурса, вы можете преобразовать свою переменную Delay
в String
, чтобы отобразить ее в Toast
.
Пример.
String delayString = "Delay = " + Integer.toString(Delay);
Toast.makeText(WaitingActivity.this, delayString, Toast.LENGTH_LONG).show();
Спасибо, теперь он показывает "5", но как я могу добавить к нему сообщение? Я хочу показать «Задержка = 5».
Toast.makeText(WaitingActivity.this, "Delay = " + delayString, Toast.LENGTH_LONG).show(); Это сделает работу!
Чему равно значение ответа?