尝试从方法

时间:2016-02-27 09:13:06

标签: java android methods

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。

2 个答案:

答案 0 :(得分:0)

您可以输入getData()代码吗? 我认为,因为该方法使用AsyncTask左右来异步下载URL中的数据。这意味着该方法尚未完成下载,setText(name)代码已经执行。所以它会显示null

答案 1 :(得分:0)

唯一的解释是object.getString("name")返回null,或者您之后将其设置为null。顺便说一句,当从网络上检索数据时,您应该使用AsyncTask,以获取更多详细信息refer here