首页 文章

存储Volley请求数据

提问于
浏览
1

我正在学习自己编程,我正面临一个我认为很容易解决的问题 .

我正在使用Google Volley提出请求,并想了解我如何存储请求中的信息,以便我在onCreate中与他们合作 .

public void parseJSON(){

StringRequest getRequest = new StringRequest(Request.Method.GET,activity.getString(R.string.URL),
            new Response.Listener() {

                @Override
                public void onResponse(String response) {
                  I need to store the data for use in the method onCreate.

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

                    Log.e("Error.Response", error.toString());


                }
            });
    request.add(getRequest);
}

我不知道如何将这个单独方法的数据传递给main .

我一个人开始研究了很多,但对这个简单的问题一无所获 .

还是非常感谢!

2 回答

  • 2

    onResponse 方法中 response 的数据类型是 JSONArrayJSONObject ,所以要在String中获取它只需调用 response.toString() 现在你可以在你的 parseJSON() 中返回它,如下所示:

    public String parseJSON(){
     final String responseStr = new String();
    
            JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
    responseStr = response.toString();
                    for (int i = 0; i < response.length(); i++) {
                        try {
    //parse you Json here
    
    } catch (JSONException e) {
                            Log.d(e.toString());
                        }
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(error.toString());
                }
            });
    
            Volley.newRequestQueue(context).add(request);
    
            return responseStr ;
    
        }
    

    或者你可以在你的活动中创建一个公共静态函数来设置一个字符串并在 parseJSON() 中调用它

  • 0

    您可以使用SharedPreferences存储数据 . 创建一个方法来做到这一点 .

    private void sharedResponse(String response) {
        SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = m.edit();
        editor.putString("Response", response);
        editor.commit();
    }
    

    并从onResponse调用此方法 .

    @Override
                public void onResponse(String response) {
                  //I need to store the data for use in the method onCreate.
                  sharedResponse(response);
            }
    

    您可以从其他类访问此数据

    SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
    mResponse = m.getString("Response", "");
    

相关问题