如何在android中首次运行时将值设置为变量

时间:2017-02-24 17:06:56

标签: java android variables scope

当我转到main_activity我运行sec_activity请求并获取价值并生成sec_activity时,我有2项活动(volleyToast)打印sec变量sec有效,Toast打印sec成功)但当我想要Toast volley请求{{ 1}}是空的

如果我回到sec并再次转到main_activitysec_activity有效

这是我的代码:

Toast
这个吐司中的

是有效的:

private static String sec;
//other variables
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send_new_content);

    JsonArrayRequest movieReq = new JsonArrayRequest("url example",
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            JSONObject obj = response.getJSONObject(i);

                            try {

                                sec = new String(obj.getString("sec").getBytes("ISO-8859-1"), "UTF-8");
                                Toast.makeText(send_new_content.this, "in here is valid"+sec, Toast.LENGTH_SHORT).show();
                                //other values
                            } catch (UnsupportedEncodingException e1) {
                                e1.printStackTrace();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }}
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }});
    AppController.getInstance().addToRequestQueue(movieReq);

    Toast.makeText(send_new_content.this, "in here is empty "+sec, Toast.LENGTH_SHORT).show();
}

}

并且此Toast无效:

Toast.makeText(send_new_content.this, "in here is valid"+sec, Toast.LENGTH_SHORT).show();

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是因为volley默认处理后台线程上的请求,即使您无法在UI线程上发出请求,显示空Toast值的sec也是因为它不等待您为sec分配一些值的服务器响应,它在调用volley的响应回调方法之前运行。

如果您依赖服务器端数据,则只应在收到服务器响应后继续操作。在此之前,您还可以向用户显示一些等待对话框。