我有一个ResponseListener
,可以从网上获取一些用户数据。我将监听器放在一个名为getUserDataFromWeb()
..
我想要测试目的来干杯一些响应值..在这个例子中是一个邮政编码。当我想要对邮政编码进行干杯时,它只能在responseListener中运行,但在onCreate()
方法之后,它应该实际更新了我的逻辑中的类变量"postcode"
..
我试图在onStart()
方法中干预邮政编码,但它仍为空
我的onCreate()
方法如下所示:
username = getIntent().getStringExtra(Constants.KEY_USERNAME);
getUserDataFromWeb(username);
Toast.makeText(this, postcode, Toast.LENGTH_SHORT).show();
// when i toast at this point, the postcode is null...
该功能如下所示:
public void getUserDataFromWeb(String username){
Response.Listener<String> listener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject JSONResponse = new JSONObject(response);
boolean success = JSONResponse.getBoolean("success");
if (success){
postcode = JSONResponse.getString(Constants.KEY_POSTCODE);
// When i toast the postcode at this place it works
}else{
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
UserDataRequest userDataRequest = new UserDataRequest(username,listener);
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
queue.add(userDataRequest);
}
你能帮我解释为什么在getUserdataFromWeb()
之后没有设置邮政编码类变量吗?