Je faisais juste des expériences avec Volley pour apprendre l'appel réseau. J'ai trouvé cela plutôt étrange, donc je veux juste savoir pourquoi cela arrive. Le android developer guide avait un exemple similaire pour Volley et j'ai changé un petit peu pour que la réponse soit contenue dans la chaîne responseJSON
et je l'utilise pour la mettre dans un textView dans l'activité. Quand je tournerai la textView au sein la fonction onResponse()
, le résultat est affiché dans la textview (ligne commentée) mais si je le fais en dehors la fonction comme indiqué ci-dessous la chaîne responseJSON
se null
(j'ai vérifié par du pain grillé) et donc la textView apparaît vide. Pourquoi cela arrive-t-il? Pourquoi ne pas responseJSON
simplement se lier à la réponse, la portée est toujours valide, donc incapable de comprendre pourquoi cela se produit.Impossible de conserver la valeur de réponse Volley pour une utilisation ultérieure, elle devient nulle
package com.example.imnobody.sampleprojectnetwork;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity {
private String reponseJSON;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView mTextView = (TextView) findViewById(R.id.text);
RequestQueue queue = Volley.newRequestQueue(this);
String url ="https://www.google.com";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
reponseJSON = response;
//mTextView.setText(reponseJSON);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "nothing", Toast.LENGTH_SHORT).show();
}
});
queue.add(stringRequest);
mTextView.setText(reponseJSON);
}
}
Avez-vous l'autorisation d'Internet ** ** dans mainfest ..? –
Comme je l'ai dit je n'ai aucun problème quand j'ai mTextView.setText (reponseJSON) dans la méthode onResponse, seulement quand il est à l'extérieur il n'y a pas de résultat et je veux savoir pourquoi –