2016-04-16 2 views
-1

Мне нужно получить состояние [0] из void onResponse() для определения возвращаемого значения целого метода. Я обнаружил, что состояние [0] в inResponse, которое не может быть объявили значение для класса. Можно ли вывести состояние [0] из? Пожалуйста, помогите мне !!!!!!!!!!!!!!!! У меня нет идей для этого. Я просто новичок.Android: как вернуть данные из метода void

String url = url; 
    final boolean[] state = {true} 

    RequestQueue requestQueue = Volley.newRequestQueue(context); 

    CustomRequest customRequest = new CustomRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() { 

     public void onResponse(JSONObject jsonObject) { 

      try { 
       for (int i = 0; i < jsonObject.getJSONArray("favourites").length(); i++) { 

        JSONObject row = jsonObject.getJSONArray("favourites").getJSONObject(i); 
        Favourite favourites = new Favourite(); 
        favourites.setFavouriteId(row.getString("favouriteId")); 
        favourites.setFavouriteUserId(row.getString("favouriteUserId")); 
        favourites.setFavouriteType(row.getString("favouriteType")); 

        favourites.setFavouritePostId(row.getString("favouritePostId")); 
        favourites.setFavouriteDate(row.getString("favouriteDate")); 

        if(!reportType.equals(favourites.getFavouriteType()) && !favouritePostId.equals(favourites.getFavouritePostId())){ 
         state[0] = false; 

        } 

        favouriteArrayList.add(i, favourites); 
       } 

       //Toast.makeText(context, "done", Toast.LENGTH_SHORT).show(); 

      } catch (JSONException e) { 
       e.printStackTrace(); 

       Toast.makeText(context, R.string.error_json_error, Toast.LENGTH_SHORT).show(); 

      } 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError volleyError) { 

     } 
    }); 

    requestQueue.add(customRequest); 

    if (state[0] == true) { 
     return 0; 
    } else{ 
     return 1; 
    } 
+0

вам нужно создать метод, возвращающий Int – Max

+0

onResponse и onErrorResponse не будет выполняться в том месте, где вы их пишете, это не имеет никакого смысла для них, чтобы вернуть что-нибудь. Вы понимаете, как работают асинхронные обратные вызовы? –

ответ

0

Вы не можете вернуть данные из метода void. Просто измените «void» на «int», если вы возвращаете значения int в этом методе (если можете). Итак, если вы используете thread - Use Handler для обработки вашего результата в главной теме. Если вы используете AsyncTask - обрабатываете свой результат в методе protected void onPreExecute(). Вот как использовать AsyncTask.

+0

Могу ли я использовать VolleyCallback в этом onResponse, чтобы получить значение? –

+0

контрольные ссылки: https://github.com/codepath/android_guides/wiki/Networking-with-the-Volley-Library, http://programminglife.io/android-volley-synchronous-request/, http: // mobikul .com/как к передаче-JSON-пост-запрос с использованием-залповый покой апи / –

Смежные вопросы