-3

J'essaie de récupérer les données du serveur et de les afficher dans mon application. Cependant, le résultat du serveur est nul. Est-il possible que le résultat obtienne null et il ne soit pas capable d'extraire des données du serveur?Erreur lors de la récupération des données du serveur en récupérant java.lang.NullPointerException: Android

Ce sont des données de mon serveur,

{ 
"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"] 
]} 

Voilà comment je suis en train de récupérer les données,

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); 

En cliquant sur le RelativeLayout, appelant la fonction 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); 
         } 
        } 
       }); 

et la fonction de réponse JSON est comme ci-dessous,

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); 
} 

Je reçois une erreur,

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

'timeStatus' est null. –

Répondre

0

Le problème est ici. Vous obtenez une valeur nulle de timestatus. Corrigez-la.

timeStatus.setText(mon); 
+0

Je n'arrive pas à comprendre pourquoi j'obtiens une valeur nulle pour timeStatus. – devgeek

0

votre textview de TimeStatus est nul S'il vous plaît jeter (findViewById) le TimeStatus ou vous pouvez avoir appeler cette méthode dans doinbackground. Si vous avez mis cette metod dans doinbackground qu'elle donne une exception de pointeur nul