我创建了一个自定义对象数组来存储值。
mNearbyPlaceMini[] mn = new mNearbyPlaceMini[googlePlacesObj.results.size()];
for (int i = 0; i < googlePlacesObj.results.size(); i++) {
mGooglePlaces.place place = googlePlacesObj.results.get(i);
Bitmap placeImageBitmap = null;
try {
URL imageUrl = new URL(place.icon);
placeImageBitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mn[i].placePicture = placeImageBitmap; //ERROR HERE
mn[i].placeName = place.name;
...
}
但是当我尝试为像mn[i].placePicture = placeImageBitmap
这样的对象的属性赋值时,它会给我java.lang.NullPointerException
错误。 placeImageBitmap
具有有效值且不为null,因此我对我的对象数组一定是错误的。
public class mNearbyPlaceMini {
public Bitmap placePicture;
public String placeName;
public Double latitude;
public Double longitude;
public mNearbyPlaceMini(){}
}
答案 0 :(得分:1)
您永远不会将对象分配给mn[i]
,因此它为空。
您使用mNearbyPlaceMini[] mn = new mNearbyPlaceMini[googlePlacesObj.results.size()];
创建一个数组,但这只会创建一个googlePlacesObj.results.size()
个空对象的数组。
您必须使用mn[i] = new mNearbyPlaceMini();
初始化数组中的每个对象。
只有这样,您才能在不获取NullPointerException的情况下访问mn[i]
。
答案 1 :(得分:1)
试试这个:
ArrayList<mNearbyPlaceMini> mn = new ArrayList<mNearbyPlaceMini>();
for (int i = 0; i < googlePlacesObj.results.size(); i++) {
mGooglePlaces.place place = googlePlacesObj.results.get(i);
Bitmap placeImageBitmap = null;
try {
URL imageUrl = new URL(place.icon);
placeImageBitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mNearbyPlaceMini mplaceMini = new mNearbyPlaceMini();
mplaceMini.placePicture = placeImageBitmap; //ERROR HERE
mplaceMini.placeName = place.name;
mn.add(mNearbyPlaceMini);
}