我有此活动接收要在UI上显示的JSON响应。我的要求是这样的。
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方法。
知道如何告诉我的活动等待数据吗?
答案 0 :(得分:0)
您应该只在请求完成后启动它,而不是要求ProfActivity
等待。将startActivity代码放在异步任务的postExecute
方法的末尾。
对我来说,我还会将网络请求部分移动到ProfActivity
,这样您就不需要通过公共变量访问结果了。
答案 1 :(得分:0)
如果您坚持使用活动,请使用startActivityForResult,并将解析和setText部分放在onActivityResult
中。
此外,AsyncTask可能是更好的选择。