【发布时间】:2016-01-22 07:00:07
【问题描述】:
我一直在使用 loopj 库与我的服务器进行交互。 我在片段内创建了一个视图寻呼机,因此创建了子片段 在这些子片段中,当我向服务器发送请求时,我得到了正确的响应。 当我向服务器发送刷新请求时出现问题,响应仍然正确,但 UI 变为黑色,我无法再与 UI 交互。
我连接服务器的代码是:
private void setWatchlistData() {
String url = "";
switch (watchlist_type) {
case 1:
url = "/getWatchList";
break;
case 2:
url = "/getTrendingWatchList";
break;
case 3:
url = "/getRecommendedWatchList";
break;
}
responseHandler = new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, JSONObject response) {
if (progressDialog.isShowing()) {
progressDialog.dismissWithAnimation();
if (swipeRefresh.isRefreshing())
swipeRefresh.setRefreshing(false);
try {
Log.d(TAG, response.toString());
if (!response.isNull("status")) {
if (response.getBoolean("status")) {
assets = new ArrayList<Asset>();
JSONArray arr = response.getJSONArray("watchlist");
for (int i = 0; i < arr.length(); i++) {
JSONObject obj = arr.getJSONObject(i);
Asset a = new Asset();
a.setType(new AssetType(obj.getJSONObject("type")));
a.setName(obj.getString("name"));
a.setId(obj.getInt("id"));
switch (a.getType().getType()) {
case AssetType.ASSET_TYPE_STOCK:
a.setSymbol(obj.getString("symbol"));
assets.add(a);
break;
}
}
setData();
} else {
new SweetAlertDialog(getActivity(), SweetAlertDialog.ERROR_TYPE).setTitleText("Error").setContentText(response.getString("message")).setConfirmText("Ok").setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismiss();
}
}).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, String responseString, Throwable throwable) {
Log.d(TAG, responseString + "");
progressDialog.dismissWithAnimation();
new SweetAlertDialog(getActivity(), SweetAlertDialog.ERROR_TYPE).setTitleText("Error Occured").setContentText(responseString + "").show();
}
};
RequestParams params = new RequestParams();
params.add("user_id", String.valueOf(new UserDetailsHandler(getActivity()).getUser().getId()));
client.setTimeout(99999);
client.cancelAllRequests(true);
client.get(CommonUtils.BASE_URL + url, params, responseHandler);
progressDialog.show();
}
滑动刷新功能:
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
setWatchlistData();
}
});
第一次调用后,关注列表会更新,但在滑动刷新时会显示问题。
【问题讨论】:
标签: android android-fragments android-asynctask fragment loopj