2017-08-03 1 views
0

J'essaie de récupérer un tableau à partir d'une base de données sur un serveur distant en utilisant la bibliothèque Android Volley. Le problème est que le JSONobject ne renvoie aucune donnée dans la méthode onResponse. Lorsque j'essaie d'afficher les données dans JSONobject, l'application se bloque et logcat affiche une exception NullPointerException.JsonArrayRequest ne donne aucune réponse

code Java est donnée ci-dessous:

public class AudioFragmentThree extends Fragment { 
    View view; 
    TextView text; 
    String url = "http://www.muftiattaullahmultani.com/android/get_all_bayan.php"; 
    int count = 0; 
    int i = 0; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.audio_fragment_three, container, false); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, url, null, new Response.Listener<JSONArray>() { 
      public void onResponse(JSONArray response) { 
       while(count<response.length()) 
       { 
        JSONObject object= null; 
        try { 
         object = response.getJSONObject(count); 
         String s = object.getString("id") +" "+ object.getString("topic"); 

         text.setText(s); 

         count++; 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       text.setText("ERROR"); 
      } 
     }); 

     MySingleton.getInstance(getActivity()).addToRequestQueue(jsonArrayRequest); 
    } 
} 

LogCat est donnée ci-dessous:

FATAL EXCEPTION: main Process: com.example.mashood.muftiattaullahmultanicom, PID: 22596 
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at 
com.example.mashood.muftiattaullahmultanicom.AudioFragmentThree$1.onResponse(AudioFragmentThree.java:81) 
     at com.example.mashood.muftiattaullahmultanicom.AudioFragmentThree$1.onResponse(AudioFragmentThree.java:69) 
     at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65) 
     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5910) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

Ci-dessous mon code PHP:

<?PHP include 'database.php'; 
$query = 'SELECT * FROM audio_bayan ORDER BY no DESC'; 
$result = $conn->query($query); 
$response = array(); 
while($row = $result->fetch_assoc()) { 
    array_push($response,array("id"=>$row['no'],"topic"=>$row['topic'])); 
} 
echo json_encode($response); 
?> 

Répondre

2

Vous devez définir textview comme ci-dessous:

Textview text; 

text = (TextView) view.findViewById(R.id.textid); 
1

On dirait que votre TextView est nulle.

java.lang.NullPointerException: tentative d'invoquer la méthode virtuelle 'vide android.widget.TextView.setText (java.lang.CharSequence)' sur un objet nul référence

Cela signifie que vous essayons d'appeler setText sur une référence nulle. Vous devez attribuer une référence de votre TextView de mise en page XML au TextView, quelque chose comme ça dans onCreateView ou onActivityCreated:

TextView text =(TextView) view.findViewById(R.id.text_view); 

où, text_view est l'identifiant de votre TextView en XML.

1

vous oubliez le champ findViewById votre text ajouter:

text = (TextView) view.findViewById(R.id.text_id); 

à votre méthode onCreateView