String name;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getData();
this.setText(name);
}
private void getData(){
name = object.getString("name");
}
我只是将我的代码行缩短,无论如何,这个想法已经存在。因此,在方法getData()
上,我从网络上检索数据。我能够测试并且能够得到结果但是当我把名字放在onCreate()
上时它给我一个空值。如何解决这个问题呢?
public class Testing extends NavigationLiveo{
String name;
@Override
public void onInt(Bundle savedInstanceState) {
getData();
Log.wtf("name0", name);
this.username.setText(name);
}
private void getData() {
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
StringRequest sr = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
try {
name = object.getString("name");
Log.wtf("name1", name);
} catch (Exception e) {
Log.wtf("testing1", e.getMessage());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("user", user_pid);
return params;
}
};queue.add(sr);
}
}
再一次,我的编码很简单。我真的可以从Web服务器获取数据。只是当我试图访问onInt(Bundle savedInstanceState)上的名称时,它会返回一个空值。日志也说明了一切。 &#34; NAME1&#34; &#34; name0&#34;返回值返回null。
答案 0 :(得分:0)
您可以输入getData()
代码吗?
我认为,因为该方法使用AsyncTask
左右来异步下载URL中的数据。这意味着该方法尚未完成下载,setText(name)
代码已经执行。所以它会显示null
。
答案 1 :(得分:0)
唯一的解释是object.getString("name")
返回null,或者您之后将其设置为null。顺便说一句,当从网络上检索数据时,您应该使用AsyncTask,以获取更多详细信息refer here。