延迟数据导致OnCreate上出现NullPointerException

时间:2013-11-04 02:53:01

标签: java android json nullpointerexception

我有此活动接收要在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方法。

知道如何告诉我的活动等待数据吗?

2 个答案:

答案 0 :(得分:0)

您应该只在请求完成后启动它,而不是要求ProfActivity等待。将startActivity代码放在异步任务的postExecute方法的末尾。

对我来说,我还会将网络请求部分移动到ProfActivity,这样您就不需要通过公共变量访问结果了。

答案 1 :(得分:0)

如果您坚持使用活动,请使用startActivityForResult,并将解析和setText部分放在onActivityResult中。 此外,AsyncTask可能是更好的选择。