[英]Android Jsoup - NullPointerException when parsing images
[英]NullPointerException Parsing Jsoup
使用Jsoup解析网站时,出现NullPointerException异常。 解析的实际网页根据用户输入而变化。 本质上,有时网页上有图像,有时则没有。
Document doc = Jsoup.connect("http://www.forbes.com/colleges/"+college+"/").get();
Elements photos = doc.select("div[id=photos]");
if(photos!=null){
imgSrc1 = photos.select("li").select("img").first().attr("src");
input1 = new java.net.URL(imgSrc1).openStream();
bitmap1 = BitmapFactory.decodeStream(input1);
image1.setImageBitmap(bitmap1);
}else{
buffer.append("No Pictures");
}
到目前为止,对于具有图片的网页,它们可以正确显示。 对于那些没有图像的对象,我会抛出NPE。 我尝试通过检查是否存在id“照片”来阻止它,但是仍然出现错误。
logcat的:
07-30 16:24:43.497: E/AndroidRuntime(30847): FATAL EXCEPTION: main
07-30 16:24:43.497: E/AndroidRuntime(30847): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.collegeselector/com.collegeselector.CollegeInfo}: java.lang.NullPointerException
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.os.Looper.loop(Looper.java:137)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread.main(ActivityThread.java:5039)
07-30 16:24:43.497: E/AndroidRuntime(30847): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 16:24:43.497: E/AndroidRuntime(30847): at java.lang.reflect.Method.invoke(Method.java:511)
07-30 16:24:43.497: E/AndroidRuntime(30847): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-30 16:24:43.497: E/AndroidRuntime(30847): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-30 16:24:43.497: E/AndroidRuntime(30847): at dalvik.system.NativeStart.main(Native Method)
07-30 16:24:43.497: E/AndroidRuntime(30847): Caused by: java.lang.NullPointerException
07-30 16:24:43.497: E/AndroidRuntime(30847): at com.collegeselector.CollegeInfo.onCreate(CollegeInfo.java:92)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.Activity.performCreate(Activity.java:5104)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-30 16:24:43.497: E/AndroidRuntime(30847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
07-30 16:24:43.497: E/AndroidRuntime(30847): ... 11 more
我应该怎么做才能解决这个问题?
样本链接: http : //www.forbes.com/colleges/cornell-university/没有照片http://www.forbes.com/colleges/columbia-university-in-the-city-of-new-纽约/确实有照片
您需要检查您的照片元素是否实际包含物品
Document doc = Jsoup.connect("http://www.forbes.com/colleges/"+college+"/").get();
Elements photos = doc.select("div[id=photos]");
if(photos!=null && photos.size() > 0){
imgSrc1 = photos.select("li").select("img").first().attr("src");
input1 = new java.net.URL(imgSrc1).openStream();
bitmap1 = BitmapFactory.decodeStream(input1);
image1.setImageBitmap(bitmap1);
}else{
buffer.append("No Pictures");
}
注意photos.size() > 0
我添加到了if语句中。 如果没有元素,则Jsoup
select(..)
语句将不会返回null。 他们将返回一个空的Elements
列表。 您只需要检查photos
的大小
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.