首页 > 解决方案 > 如何将值从 volley 的 onResponse() 存储到静态变量中

问题描述

请参阅BarChartPosNegActivity.data_str=jsonArray.toString();
我通过 PHP 文件和 volley 从 Web DB 获取数据
并将数据存储到BarChartPosNegActivity.data_str静态变量 中

当我运行代码时,BarChartPosNegActivity.data_str由于初始化变量,首先打印“aa”static String data_str="aa";

在我按下“返回”按钮并重新输入当前活动(使用 MPAndroidChart 的条形图屏幕)后,BarChartPosNegActivity.data_str打印表格数据

如何在BarChartPosNegActivity.data_str没有“返回屏幕并重新进入屏幕”的情况下直接将表格数据存储到?

public class BarChartPosNegActivity extends AppCompatActivity
{
    // ================================================================================
    ...

    // Create static variable
    static String data_str="aa";

    // ================================================================================
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {

        // ================================================================================
        super.onCreate(savedInstanceState);

        // ================================================================================
        setContentView(R.layout.activity_bar_chart_pos_neg);

        // ================================================================================
        ... 

        get_refDB_up_down_numerical_table();
        System.out.println(BarChartPosNegActivity.data_str);

        // ================================================================================
        // Create BarDataSet1 object
        BarDataSet barDataSet1=new BarDataSet(dataValues1(),"DataSet 1");

        ...

    }

    // ================================================================================
    void get_refDB_up_down_numerical_table()
    {
        Response.Listener<String> responseListener = new Response.Listener<String>()
        {
            @Override
            public void onResponse(String response)
            {
                try
                {
                    JSONArray jsonArray=new JSONArray(response);
                    BarChartPosNegActivity.data_str=jsonArray.toString();
                }
                catch (JSONException e)
                {
                    e.printStackTrace();
                }
            }
        };

        RefDBNumericRequest loginRequest = new RefDBNumericRequest(responseListener);
        RequestQueue queue = Volley.newRequestQueue(BarChartPosNegActivity.this);
        queue.add(loginRequest);
    }
}

标签: androidandroid-volleympandroidchart

解决方案


移动这段代码:

System.out.println(BarChartPosNegActivity.data_str);

// ================================================================================
// Create BarDataSet1 object
BarDataSet barDataSet1=new BarDataSet(dataValues1(),"DataSet 1");
...

进入 onResponse 处理程序。当您从 HTTP 调用返回响应时,将调用此函数。


推荐阅读