我有一个接收 JSON 响应以显示在 UI 上的 Activity 。我的请求是这样的。
public void onClick(View click) {
if (click == profBtn) {
//this line creates the post request on my RequestHandler class.
requestHandler.setURL(url);
Intent it = new Intent(MainActivity.this, ProfActivity.class);
startActivity(it);
} else if....
这是我的 OnCreate 方法,看起来像我的 ProfActivity
TextView tv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.prof_activity);
//this command gets the data from the JSON Response from my mapper class.The JSON Response was converted to a HashMap.
mapData=MapperClass.map;
String value=mapData.get("key");
tv = (TextView) findViewById(R.id.textView1);
tv.setText(value);
}
setText 命令导致 NullPointerException。发出请求、接收响应、将响应映射到 HashMap 并将映射的值传递给 ProfActivity 工作正常。这里的问题是 JSON 响应有点晚了。在要显示的数据到达之前,Oncreate方法已经执行了。
知道如何告诉我的 Activity 等待数据吗?
最佳答案
您不应要求 ProfActivity
等待,而应仅在请求完成后启动它。将 startActivity 代码放入异步任务的 postExecute
方法的末尾。
对我来说,我还会将网络请求部分移至 ProfActivity
中,这样您就不需要通过公共(public)变量访问结果。
关于java - 延迟数据导致 OnCreate 上出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760937/