java - 延迟数据导致 OnCreate 上出现 NullPointerException

标签 java android json nullpointerexception

我有一个接收 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/

相关文章:

java - ArrayList.add 有效,但 ArrayList.remove 无效

javascript - Firebase 列表与对象

javascript - 如何将 extjs 标记字段作为数组发布而不用引号引起来

java - 从 arrayList() 中删除属性

Java SSL连接,以编程方式将服务器证书添加到 keystore

java - 使用移动平台的套接字在java中实现实时聊天应用程序好吗?

java - 从集合中查找 2d 中点之间的最短路线

java - 了解 WebView 代码

android - iOS中有没有类似于Android的XML Drawables的东西?

json - 如何使用 Expo Filesystem 保存导入的 JSON 文件