-3

我想从服务器获取数据并将其显示到我的应用程序中。 但是,我从服务器获取结果为空。结果是否可能为空,并且无法从服务器获取数据?从服务器获取数据时出错java.lang.NullPointerException:Android

这是从我的服务器数据,

{ 
"COLUMNS": ["TIMEID","BRANCHID","COMPANYID","MON_O","TUE_O","WED_O","THU_O","FRI_O","SAT_O","SUN_O","MON_C","TUE_C","WED_C","THU_C","FRI_C","SAT_C","SUN_C","CREATDATE"], 
"DATA": 
[[195,4,4,"09:00","09:00","09:00","09:00","09:00","Closed","Closed","16:30","16:30","16:30","16:30","16:30","Closed","Closed","May, 16 2017 08:16:12"] 
]} 

这是我正在试图获取数据,

TextView timeStatus; 

public static final String MON_O = "MON_O"; 
public static final String TUE_O = "TUE_O"; 
public static final String WED_O = "WED_O"; 
public static final String THU_O = "THU_O"; 
public static final String FRI_O = "FRI_O"; 
public static final String SAT_O = "SAT_O"; 
public static final String SUN_O = "SUN_O"; 

public static final String MON_C = "MON_C"; 
public static final String TUE_C = "TUE_C"; 
public static final String WED_C = "WED_C"; 
public static final String THU_C = "THU_C"; 
public static final String FRI_C = "FRI_C"; 
public static final String SAT_C = "SAT_C"; 
public static final String SUN_C = "SUN_C"; 

public static final String JSON_ARRAY = "COLUMNS"; 

timeStatus = (TextView) view.findViewById(R.id.time_status); 

在点击的RelativeLayout,调用的getData()函数,

  timeLayout.setOnClickListener(new View.OnClickListener() { 

       @Override 
        public void onClick(View v) { 
        if (timeLayoutCollapse.getVisibility() == View.GONE) { 
         timeLayoutCollapse.setVisibility(View.VISIBLE); 
          getData(); 
         } else { 
          timeLayoutCollapse.setVisibility(View.GONE); 
         } 
        } 
       }); 

和JSON响应函数如下,

private void getData() { 

    if (dBranchID == 0) { 

     Log.e("no branch id", "sdsfsdf"); 
     return; 
    } 


    String url = context.getString(site_url)+"branch_time.cfc?method=branchtime&branchid=" +dBranchID; 

    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(context,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
       } 
      }); 

    RequestQueue requestQueue = Volley.newRequestQueue(context); 
    requestQueue.add(stringRequest); 
} 



private void showJSON(String response) { 

    String name = ""; 
    String address = ""; 
    String vc = ""; 


    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(JSON_ARRAY); 
     JSONObject companyData = result.getJSONObject(0); 

     mon = companyData.getString(MON_O); 
     tue = companyData.getString(TUE_O); 
     wed = companyData.getString(WED_O); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    timeStatus.setText(mon); 
} 

我得到一个错误,

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference. 
+3

'timeStatus'为空。 –

回答

0

的问题是在这里。您正在获取timestatus的空值..修复它。

timeStatus.setText(mon); 
+0

我不明白为什么我会为timeStatus获取空值。 – devgeek

0

您timestatus的TextView是空 请投(findviewbyid)的timestatus或者您可能需要调用doinbackground该方法。 如果你已经在doinbackground中放置该metod而不是它给出空指针异常

相关问题