我创建了一个活动,在其中我将一些记录插入到mysql数据库中.我声明了一个名为lastInsertID的全局变量.当我尝试在onResponse方法内打印变量时,工作正常,但当我尝试println外,该方法返回null.我还需要在方法之外使用此变量.可以做些什么?
这是我的代码:
String insertUrl = "http://localhost/file.PHP";String lastInsertID;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() { @OverrIDe public voID onResponse(String response) { lastInsertID = response.toString(); System.out.println(lastInsertID); // returns the lastInsertID } }, new Response.ErrorListener() { @OverrIDe public voID one rrorResponse(VolleyError error) { } }) { @OverrIDe protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> parameters = new HashMap<String, String>(); // parameters return parameters; } }; requestQueue.add(request); System.out.println(lastInsertID); // get's null}
谢谢!
解决方法:
它们是不同的结果,因为虽然您向本地http服务器发出请求,但在设置lastInsertID之前,最后一个println会触发.
你需要考虑多线程.您的http请求正在后台运行,UI线程正在继续.因此,执行顺序不是代码出现在示例中的顺序.
>创建请求队列
>请求已创建
>请求添加到队列(也可能是启动http调用)
>打印出lastInsertID(null)
> lastInsertID是根据您的回复设置的
>打印出lastInsertID
以上是内存溢出为你收集整理的java – 如何在Android中的onResponse之外使用变量?全部内容,希望文章能够帮你解决java – 如何在Android中的onResponse之外使用变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)