2016-08-02 7 views
0

Я пытаюсь ответить на библиотеку волейбола, здесь я получаю ответ в соответствии с моим ожиданием, но я не могу вернуть jsonobject в свою деятельность, я планирую написать сингл метод, который даст ответ всему приложению в Android, хорошо я иду к точке сейчас,Как вернуть volley jsonobject из класса в активность в android

у меня есть класс с именем Util.java, в этом классе я вернуться JSONObject, как показано ниже

public JSONObject fetchResponse() { 

    try { 

     JSONObject json = new JSONObject(); 

     json = createStuff(); 

     URL = "my url here" + json.toString(); 

     final JsonObjectRequest volleyRes = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        //fetchRes = result(response); 
        //fetchRes = new JSONObject(); 
        //fetchRes = new JSONObject(response.toString()); 
        Log.w("UTIL res 61 ", fetchRes.toString()); 
        // result(fetchRes); 

       } catch (Exception e) { 
        Log.w("UTILrespon error ", "" + e); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError e) { 
       Log.w("UTIL res error ", "" + e); 
      } 
     }); 

     volleyRes.setRetryPolicy(new DefaultRetryPolicy(10000, 2, 2)); 
     AppController.getInstance().addToRequestQueue(volleyRes); 
     Log.w("UTIL res 83 ", fetchRes.toString()); 

    } catch (Exception e) { 

     Log.e("UTIL Error ", "" + e); 
    } 
    return fetchRes; 

} 

Здесь fetchRes - это jsonobject, который я объявил вне этого метода

теперь моя проблема, когда я бег моего приложения, я могу получить ответ от этого метода

 @Override 
    public void onResponse(JSONObject response) { 
     try { 

      // fetchRes = result(response); 
      // fetchRes = new JSONObject(); 
      fetchRes = new JSONObject(response.toString()); 
      Log.w("UTIL res 61 ", response.toString()); 
      // result(fetchRes); 


     } catch (Exception e) { 

      Log.w("UTILrespon error ", "" + e); 
     } 

    } 

раз я получаю ответ я не могу хранить в другом JSONObject и не могу вернуться в мой MainActivity.java в андроиде .. поэтому, пожалуйста, кто-нибудь помочь мне выйти из этой проблемы

заранее спасибо

ответ

0

создать классы объекта JSON и использовать библиотеку Gson. Он напрямую преобразует строку json в объекты.

Пример: -

Gson gson = new Gson(); 
MyBean myBean; 
myBean = gson.fromJson(response.toString,MyBeans.class); 
+0

ОК, но я использую разные классы классов, поэтому эта идея не будет работать в приложении, если я могу вернуть jsonobject без нулевого значения, которого достаточно для меня, спасибо –

0
Define an interface 
interface FetResponseListener { 
    void onFetchResponse(JSONObject response); 
} 

Пройди этот интерфейс в качестве параметра fetchResponse

public void fetchResponse(FetResponseListener listener) { 
    .... 

    @Override 
    public void onResponse(JSONObject response) { 
     try { 
      listener.onFetchResponse(response); 

     } catch (Exception e) { 
      Log.w("UTILrespon error ", "" + e); 
     } 
    } 
} 

Реализовать FetResponseListener где вы звоните fetchResponse

fetchResponse(new FetResponseListener() { 
    @Override 
    public void onFetchResponse(JSONObject response) { 
     // use json response 
    } 
}); 

Или просто используйте EventBus

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