我通过JSONObject从远程服务器获取数据。问题是当我尝试将响应字符串保存到字符串数组中以便在响应侦听器外部使用时,字符串数组会提供空值。我应该怎么做才能从远程服务器获取的字符串可以在响应侦听器之外。
主要活动。 java代码在下面
public class MainActivity extends Activity {
MySingleton singleton;
TextView textView;
TextView textView2;
Button button;
RequestQueue rqueue;
final String url="http://www.muftiattaullahmultani.com/greeting.php";
public static int count=0;
public final String[] str=new String[2];
public String s;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView);
textView2=(TextView) findViewById(R.id.textView2);
JsonArrayRequest jsonObjectRequest= 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("name")+" " + object.getString("password");
str[0]=s;
textView.setText(str[0]);
count++;
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
textView.setText("ERROR");
}
});
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(jsonObjectRequest);
textView2.setText(str[0]);
}}
TextView 1给出了正确的值,但textview2给出了NuLL值..
答案 0 :(得分:1)
强大的排序功能,可以轻松正确地填充您的UI 数据从网络异步获取。
Volley
发出异步请求,这意味着在请求结束之前它不会阻塞主线程,因此textView2.setText
将在str
数组填满之前执行数据。您需要将其放在onResponse