Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将函数输出保存到Firebase和Android的变量_Java_Android_Function_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 将函数输出保存到Firebase和Android的变量

Java 将函数输出保存到Firebase和Android的变量,java,android,function,firebase,firebase-realtime-database,Java,Android,Function,Firebase,Firebase Realtime Database,我在Firebase和Android上遇到了一些问题。我想将函数的输出保存到稍后要使用的变量中,但我不确定如何为函数提供正确的参数 public void getBasicData(DataSnapshot dataSnapshot textViewDataGet) { textViewDataGet = dataSnapshot.child("Users").getValue(); } 在上面的函数中,我已经声明了一个名为textViewDataGet的字符串,并且所有库都已正确导

我在Firebase和Android上遇到了一些问题。我想将函数的输出保存到稍后要使用的变量中,但我不确定如何为函数提供正确的参数

public void getBasicData(DataSnapshot dataSnapshot textViewDataGet) {

    textViewDataGet = dataSnapshot.child("Users").getValue();
}
在上面的函数中,我已经声明了一个名为textViewDataGet的字符串,并且所有库都已正确导入。我试图实现一个基本的数据库写入功能。但是AndroidStudio不想使用字符串。但是,如果我删除变量并保留它,则不会显示任何错误。提前谢谢


Michael

您首先必须使用getInstance创建一个实例,并声明一个用于访问数据库数据的数据引用

FirebaseDatabase dbDay = FirebaseDatabase.getInstance();
final DatabaseReference day = dbDay.getReference("Day");
这是我唯一可以通过检查数据何时更改来找到方法的方法

day.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int value = dataSnapshot.getValue(int.class);
textViewDataGet = value;

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

您首先必须使用getInstance创建一个实例,并声明一个用于访问数据库数据的数据引用

FirebaseDatabase dbDay = FirebaseDatabase.getInstance();
final DatabaseReference day = dbDay.getReference("Day");
这是我唯一可以通过检查数据何时更改来找到方法的方法

day.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int value = dataSnapshot.getValue(int.class);
textViewDataGet = value;

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

与其使方法return为void,不如使其返回一个
字符串
,这样您就可以保存它以供以后使用。这是因为Java严格按值传递

当您为一个函数声明一个参数,然后将其传递给一个函数时,实际上您传递的是变量的地址,而不是变量本身,因此您对参数所做的任何更改都只会影响函数中的参数,而不会影响函数外的参数。作为解决方案,您可以尝试以下方法

public String getBasicData(DataSnapshot dataSnapshot) {

    return dataSnapshot.child("Users").getValue();
}
然后你可以在适当的地方使用它

textViewDataGet = getBasicData(dataSnapshot);

希望这有帮助:)

不要让方法返回为空,而是让它返回一个
字符串
,这样您就可以保存它供以后使用了。这是因为Java严格按值传递

当您为一个函数声明一个参数,然后将其传递给一个函数时,实际上您传递的是变量的地址,而不是变量本身,因此您对参数所做的任何更改都只会影响函数中的参数,而不会影响函数外的参数。作为解决方案,您可以尝试以下方法

public String getBasicData(DataSnapshot dataSnapshot) {

    return dataSnapshot.child("Users").getValue();
}
然后你可以在适当的地方使用它

textViewDataGet = getBasicData(dataSnapshot);

希望这有帮助:)

我试过了,但它给了我3个错误,它说没有像dataSnapshot这样的变量,它在函数“GetBasicCDATA”中需要一个字符串而不是一个对象。我试过了,但它给了我3个错误,它说没有像dataSnapshot这样的变量,它在函数中需要一个字符串而不是一个对象“GetBasicATA”