Android 对象即使在检查后仍为空
在设置对象之前,我检查以确保该对象不为Null,但它仍然返回Null 代码: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){
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在哪里。我一定是仔细看过了。谢谢你的帮助!我给你是因为你先回答,但你和亚斯拉在哪里。我一定是仔细看过了。谢谢你的帮助!