凌空请求后,全局变量为空

时间:2017-03-02 19:21:24

标签: android android-volley

我是android studio的新手,可能是一个简单的错误。 我想在一个截击请求后设置一个颜色,但我的颜色变量为空。 我确定齐射正在恢复颜色。 我的截击请求后为什么我的颜色为空?

我有这段代码:

    public class MyClass extends AppCompatActivity {

            private static Context context;
            public static String color;

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            this.context = getApplicationContext();
            getColor();
            ...
        }

   public void getColor() {
   <--volley Queue-->
StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                color = response; // ??????????????????????????
            }
        },
             new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        //Log.d("Error.Response", response);
                    }
                }
        );
        mRequestQueue.add(strReq);
    Log.w("erro: ", color); // color here is null?????????????? why??
}//getcolor()
}class

我应该使用get / set吗?有人能举个例子吗?

1 个答案:

答案 0 :(得分:3)

这是一个异步调用。在将结果传递给侦听器之前,将执行log语句。因此,如果您在通话后立即检查变量,它很可能仍然是null