我知道这个问题看起来令人困惑,但让我告诉你我得到了什么。 我试图从实时数据库中获取数据并尝试将其存储在数组中,这是我的功能
void fuctocreatesubname(){
for(int i=0;i<numberofsubjects;i++){
final int i1 = i;
DatabaseReference namedbref = databaseTracks.child(ArrayToStoreSubpath[i]);
namedbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayToStoreSubName[i1] = dataSnapshot.getValue(String.class);
Log.v("ArraytoSubpathname",ArrayToStoreSubName[i1]);
int j = 0;
while(j==i1){
functotransferarray(ArrayToStoreSubName[j],j);
j++;
}
return;
}
@Override
public void onCancelled(DatabaseError databaseError) {
return;
}
});
Log.v("Out","I AM OUT");
}
}
在此函数中:String [] ArrayToStoreSubName = new String[8];
是一个全局变量,在Logs中它显示数组已存储该值。但是当我尝试在任何其他函数中访问此数组时,该值将自动变为Null。
有什么方法可以解决这个问题吗?此外,我使用的这种方法似乎很复杂,有没有更简单的方法呢?