在我的java类中,我将一个类声明为数组,在函数中我将值赋给类的数组,但是在类的函数中它返回null。如何访问类数组。
声明的数组变量类是java(https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Marker)
中的inbuild final类代码示例:
public class Sample{
Marker redMarker[]; // Marker is the public final class
// https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Marker
void function1(){
for(int i=0;i<array.length;i++){
redMarker[i] = map.addMarker(.......);
}
}
void function2(){
if(condition){
if(redMarker!=null){
for(int i=0;i<array.length;i++){
redMarker[i].setVisible(false);
}
}
else{
// here I get redMarker is Null.
}
}
}
}
答案 0 :(得分:3)
您需要先初始化数组
Marker redMarker[];
像
这样的东西Marker redMarker[] = new Marker[someSize];
然后添加值
for (int i = 0; i < someSize; i++){
redMarker[i] = new Marker();
}
答案 1 :(得分:3)
redMarker
是数据成员,除非您在构造函数或内联中初始化它,否则它的值默认为null
。
E.g:
public class Sample{
Marker redMarker[];
public Sample(int numOfMarkers) {
redMarker = new Marker[numOfMarkers];
}
答案 2 :(得分:2)
由于您的方法不是静态的,因此您需要一个构造函数来执行以下操作:
public Sample() {
redMarker = new Marker[<put the length in here];
}
答案 3 :(得分:2)
你应该声明标记redMarker [];数组大小
修改你的function2(),如下所示。
void function1(){
if(condition){
if(redMarker!=null){
}
else{
redMarker = new Marker[array.length]; // added this line of code.
}
}
}
修改你的function1(),如下所示。
void function1(){
if(redMarker ==null){
redMarker = new Marker[array.length]; // added this line of code.
}
for(int i=0;i<array.length;i++){
redMarker[i] = map.addMarker(.......);
}
}
答案 4 :(得分:0)
如果您正在测试if(redMarker!=null)
,那么只有当redMarker实际上是else
时才会执行null
块。
一切都在运作,故障可能在你的逻辑中。
答案 5 :(得分:0)
检查function1是否仍然为空?
如果是,那么你还没有初始化你的redMarker