Android JsonObjectRequest在调试时工作,但在运行应用程序时不工作
我正在尝试使用截取来解析JSON数据,并尝试在ExpandableListView中放大它。当我启动应用程序时,流不会进入内部Android JsonObjectRequest在调试时工作,但在运行应用程序时不工作,android,Android,我正在尝试使用截取来解析JSON数据,并尝试在ExpandableListView中放大它。当我启动应用程序时,流不会进入内部 JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, TRENDING_STOCKS_URL, null, new Response.Listener<JSONObject>() { @Override public void
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, TRENDING_STOCKS_URL, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
...........
..........
}
数据并没有显示在列表视图中,但当我调试应用程序时,流并没有进入上面的代码中,而是数据正确显示
有人能告诉我这里发生了什么,我应该怎么做吗?onResponse中的代码没有被跳过,而是在响应到达时进入回调,这可能就是您最终看到数据的原因 此代码不会立即运行,onResponse是由请求对象提供的接口的实现,在响应到达时调用该接口 阅读有关回调处理和接口的内容,对于简单的回调和网络内容,两者都很容易理解 要查看响应何时返回,请在onResponse的开头打印响应本身response.toString,并在发送请求后稍等片刻,以便在日志中看到它 编辑: 另外,确保在onResponse中收到数据时,您实际上正在更新UI成员,即,如果是列表视图,请确保调用
adapter.notifyDataSetChanged()
在保存数据列表的适配器上,在确定数据已更新后,案例中的最佳位置可能位于onResponse内。
这将是:
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, TRENDING_STOCKS_URL, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
...// parse the response and put it inside the list<SomeData>
...// off-course I mean the list that's referenced in your adapter
adapter.notifyDataSetChanged
}
有几天我也遇到了类似的问题。我不知道你的问题在多大程度上是由类似的情况引起的。在我的例子中,我使用的是单打截击模式,问题如下: 活动1:请求JSONObject-->正确返回JSONObject,并填充适配器。适配器有一个将触发活动2的侦听器 活动2:请求JSONObject-->正确返回JSONObject,并填充适配器。用户完成活动2后,返回活动1 活动1:创建JSONObjectRequest并将其添加到Volley中,但随后也不会调用onResponse和OnErrorResponse 这只发生在运行模式下,但在调试时工作正常 解决方案:
将请求添加到截击时,请确保在每个活动上添加不同的标记。当移动到另一个活动时,请确保使用活动标记取消所有请求。这就解决了我的问题。请尽快回复,我被困在这里了。提前感谢..有些时间数据有时不在ListView中。我如何克服这个问题?调试您的回调并与邮递员一起检查服务,看看是否有任何不同。您是否可以发布日志?08-26 11:56:41.790 3405-3405/com.stockal.app I/stockal app﹕ TrendingStocks已成功加载08-26 11:56:42.864 3405-3405/com.stockal.app I/stockal app﹕ 电话:08-26 11:56:42.864 3405-3405/com.stockal.app I/stockal app﹕ HOMEFragment连接到HomeView 08-26 11:56:42.942 3405-3429/com.stockal.app W/EGL_仿真﹕ eglSurfaceAttrib未实施08-26 11:56:42.942 3405-3429/com.stockal.app W/OpenGLRenderer﹕ 未能在表面0xb42d1cc0上设置EGL_SWAP_行为,错误=EGL_SUCCESSBro:我的意思是编辑问题并添加日志的一大部分,添加一份关于onResponse内部情况的打印,以便您可以查看它是否正常工作,并将该打印添加到问题:另外-我正在编辑我的答案,也请查看