Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
Android 对象即使在检查后仍为空_Android_Arrays_Json - Fatal编程技术网

Android 对象即使在检查后仍为空

Android 对象即使在检查后仍为空,android,arrays,json,Android,Arrays,Json,在设置对象之前,我检查以确保该对象不为Null,但它仍然返回Null 代码: jsonobjectjson=jparse.getJSONFromUrl(URL); JSONObject c; JSONObject d; 试一试{ pictures=json.getJSONArray(TAG_pictures); c=pictures.getJSONObject(2); 画廊=c.getJSONArray(TAG_画廊); Log.d(标签“图片后”); }捕获(JSONException e){

在设置对象之前,我检查以确保该对象不为Null,但它仍然返回Null

代码:

jsonobjectjson=jparse.getJSONFromUrl(URL);
JSONObject c;
JSONObject d;
试一试{
pictures=json.getJSONArray(TAG_pictures);
c=pictures.getJSONObject(2);
画廊=c.getJSONArray(TAG_画廊);
Log.d(标签“图片后”);
}捕获(JSONException e){
e、 printStackTrace();
}
试一试{
//在此处获取thumbPath的每个实例
//穿过整个画廊
对于(intz=0;z
您可以看到,通过上面的代码,我正在解析一个JSON对象,并从中获得一个路径列表。这些路径需要传递到
getImagesFromPaths(paths)
它永远不会到达该路径,并且会导致应用程序崩溃,因为除了最后一条路径之外,它在所有路径上都返回null

在将其设置为数组之前,我使用
检查(thumbpath!=null&&Captions!=null)
是否仍然会将其放置在日志中,而不会移动到日志中

我怎样才能让它拥有所有的路径,这样我就可以发送它们,从URL接收它们

if(thumbpath != null && Captions != null)
您正在同时检查两者是否为null。你的陈述是说它们不能都等于null,也许
标题
不是null,但是
thumbpath
是null(或者反之亦然[不太可能]),你的陈述仍然是真的

您需要单独检查:

if(thumbpath != null) {
    if (Captions != null){
         thumbpaths[z] = thumbpath;
         captions[z] = Captions;
    }
} else { /* Do other stuff... */ }
编辑:另外,正如@Iahsrah所说,您正在重新初始化两个数组,使for循环的每次迭代都为null,这就是为什么只有最后一个数组包含任何非null值(它没有机会重新初始化)

您需要将这些内容放在for循环之外:

thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];
您正在同时检查两者是否为null。你的陈述是说它们不能都等于null,也许
标题
不是null,但是
thumbpath
是null(或者反之亦然[不太可能]),你的陈述仍然是真的

您需要单独检查:

if(thumbpath != null) {
    if (Captions != null){
         thumbpaths[z] = thumbpath;
         captions[z] = Captions;
    }
} else { /* Do other stuff... */ }
编辑:另外,正如@Iahsrah所说,您正在重新初始化两个数组,使for循环的每次迭代都为null,这就是为什么只有最后一个数组包含任何非null值(它没有机会重新初始化)

您需要将这些内容放在for循环之外:

thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];

您确实意识到,您的拇指路径和标题数组已初始化为其大小,并充满空值,对吗?因此,如果不使用非null值设置索引(z),它们仍然是null。您在每个循环迭代中都在这样做

// All values in the array have been initialized to null
thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];

您确实意识到,您的拇指路径和标题数组已初始化为其大小,并充满空值,对吗?因此,如果不使用非null值设置索引(z),它们仍然是null。您在每个循环迭代中都在这样做

// All values in the array have been initialized to null
thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];

我本来会加上一条评论的,但我没有这个名声

我注意到一个问题:

这个

for(int z = 0; z < gallery.length(); z++) {

    thumbpaths = new String[gallery.length()];
    captions = new String[gallery.length()];

    ...
}
for(intz=0;z
应该是

thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];

for(int z = 0; z < gallery.length(); z++) {
    ...
}
thumbpath=新字符串[gallery.length()];
标题=新字符串[gallery.length()];
对于(intz=0;z
我本想添加一条评论,但我没有声誉

我注意到一个问题:

这个

for(int z = 0; z < gallery.length(); z++) {

    thumbpaths = new String[gallery.length()];
    captions = new String[gallery.length()];

    ...
}
for(intz=0;z
应该是

thumbpaths = new String[gallery.length()];
captions = new String[gallery.length()];

for(int z = 0; z < gallery.length(); z++) {
    ...
}
thumbpath=新字符串[gallery.length()];
标题=新字符串[gallery.length()];
对于(intz=0;z
你介意发布堆栈跟踪吗?你介意发布堆栈跟踪吗?我给你的是因为你先回答了,但是你和iahsrah在哪里。我一定是仔细看过了。谢谢你的帮助!我给你是因为你先回答,但你和亚斯拉在哪里。我一定是仔细看过了。谢谢你的帮助!