【发布时间】:2021-03-22 15:37:17
【问题描述】:
我的 loginactivity 类中定义了一个静态数组列表。
private static ArrayList<LatLng> userCoordinates;
// Removed some code for ease of reading but the contents of the list are defined and set here:
ArrayList<LatLng> coords = new ArrayList<>();
for (String lat: lats) {
for (String lng: lngs) {
double a = Double.parseDouble(lat);
double b = Double.parseDouble(lng);
LatLng latLng = new LatLng(a,b);
coords.add(latLng);
break;
}
}
setCoordinates(coords);
// Getter & Setter
private void setCoordinates(ArrayList<LatLng> coordinates) {
userCoordinates = coordinates;
}
public static ArrayList<LatLng> getCoordinates() {
return userCoordinates;
}
但是,当我尝试从另一个类访问它并在 onCreate() 方法中打印它时:
private ArrayList<LatLng> userCoordinates = LoginActivity.getCoordinates();
//In onCreate()
System.out.println(userCoordinates.toString());
我收到错误:尝试在空对象引用上调用虚拟方法“java.lang.String java.util.ArrayList.toString()”
【问题讨论】:
-
你永远不会初始化
userCoordinates。如果你调用setCoordinates(),你只给它一个值,这在调用代码中没有完成。 -
getter 是静态的,因此该方法不能在该类之外使用。删除
static,它应该可以正常工作 -
你确定初始化列表的代码在获取列表之前运行吗?
-
@azurefrog
setCoordinates()在for循环之后被调用。 -
我确实在循环后立即调用 setCoordinates()。我也为设置和获取字符串完成了完全相同的过程(工作正常),但由于某种原因,ArrayList 返回 Null
标签: java android arraylist coordinates