Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSON检索数据时出现NullPointer异常_Java_Android_Json_Nullpointerexception - Fatal编程技术网

Java 从JSON检索数据时出现NullPointer异常

Java 从JSON检索数据时出现NullPointer异常,java,android,json,nullpointerexception,Java,Android,Json,Nullpointerexception,我试图使用JSON从服务器获取数据,并将检索到的数据放入数组 这是检索类别、intitule、id_新闻、图像的功能 但我总是得到NULLPointerException 请帮忙 这些是logCat的踪迹 这是上下文的初始化context context=this 但它会生成另一个异常NetworkOnMainThreadException和NullPointerException和JSONException:输入结束于字符0。NPE来自Toast初始化。确保传递的上下文不为空 由于您在异常捕

我试图使用JSON从服务器获取数据,并将检索到的数据放入数组 这是检索类别、intitule、id_新闻、图像的功能

但我总是得到NULLPointerException 请帮忙

这些是logCat的踪迹

这是上下文的初始化context context=this


但它会生成另一个异常NetworkOnMainThreadExceptionNullPointerExceptionJSONException:输入结束于字符0

NPE来自
Toast
初始化。确保传递的
上下文不为空

由于您在异常捕获块中使用Toast,请使用例如
e.printStackTrace()
记录异常堆栈跟踪,以获得根本原因。(主要怀疑对象:
NetworkOnMainThreadException


对于
NetworkOnMainThreadException
,请在后台线程上执行网络操作。有关更多信息,请参阅。

在Toast调用中,
上下文变量很可能为空


从不捕获NullPointerException。确保它永远不会被抛出。

正如laalto指出的
NPE
将在
Toast
语句中出现

您能否给出一个如何初始化上下文的代码片段

还可以尝试在那里使用一次
getActivity()
,看看它是否解决了问题

如果确实如此,则
覆盖onAttach()
并在其中初始化您的
上下文。因为直接给出
getActivity()
不是一个好的做法

NetworkOnMainThreadException
是由于您应该在单独的线程上进行网络调用而导致的。
使用类似于:

Thread thread = new Thread()
{
    @Override
    public void run() {
        try {
           //your network calls here
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();

我通过使用AsynkTask解决了这个问题

private class Asyn_GetNewsFromServer extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        getNewsFromServer(beg);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
                    //do what ever you want
    }
}
私有类Asyn\u GetNewsFromServer扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
getNewsFromServer(beg);
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
//你想干什么就干什么
}
}

感谢您的帮助

堆栈跟踪是?粘贴异常的strack跟踪ID您尝试在所有Toast语句中编写getactivity()而不是上下文吗?是的,但仍然有相同的问题,请查看我的编辑我进行更新,请检查
Thread thread = new Thread()
{
    @Override
    public void run() {
        try {
           //your network calls here
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();
private class Asyn_GetNewsFromServer extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        getNewsFromServer(beg);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
                    //do what ever you want
    }
}