我有一个功能getTeacherData()
并且它返回json object
,问题是当我在我的手机上禁用我的互联网连接应用程序崩溃时(android没有在android监视器中显示错误,它只是在没有显示错误的情况下崩溃),
当我在我的模拟器上运行相同的应用程序时,它工作正常,如果我断开我的互联网,onErrorResponse
也可以工作,但当我在其他手机上运行它时崩溃
private void getTeacherData() {
if (username.equals("")) {
Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show();
return;
}
String url = DATA_URL+username;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(cardview.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(String response){
try {
JSONObject jsonObject =new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(config.JSON_ARRAY);
for(int x=0;x<result.length();x++) {
JSONObject collegeData = result.getJSONObject(x);
albumList.add(new Album(collegeData.getString(config.course_name),collegeData.getString(config.semester)
,collegeData.getString(config.section),collegeData.getString(config.total_classes)
,collegeData.getString(config.subject),collegeData.getString(config.classes_taken),collegeData.getString(config.subject_code)));
adapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
我尝试过的事情:
showJSON()
; onResponse()
内的方法。getTeacherData()
try
包围整个catch
。答案 0 :(得分:1)
似乎onErrorResponse在少数设备上的响应方式不同
onErrorResponse在少数设备上返回null(这是崩溃的原因)
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error.getMessage==NULL){
Toast.makeText(cardview.this, "Failed to retrieve data", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(cardview.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});