java– 如何在Android中的onResponse之外使用变量?

java– 如何在Android中的onResponse之外使用变量?,第1张

概述我创建了一个活动,在其中我将一些记录插入到mysql数据库中.我声明了一个名为lastInsertId的全局变量.当我尝试在onResponse方法内打印变量时,工作正常,但当我尝试println外,该方法返回null.我还需要在方法之外使用此变量.可以做些什么?这是我的代码:StringinsertUrl="http://lo

我创建了一个活动,在其中我将一些记录插入到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之外使用变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存