将函数输出保存到Firebase和Android

时间:2016-06-30 12:33:07

标签: java android function firebase firebase-realtime-database

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

public void getBasicData(DataSnapshot dataSnapshot textViewDataGet) {

    textViewDataGet = dataSnapshot.child("Users").getValue();
}

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

迈克尔

2 个答案:

答案 0 :(得分:2)

您首先必须使用 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) {

}
});

答案 1 :(得分:0)

不要让方法返回void,而是让它返回String,以便您可以将其保存以供以后使用。这是因为Java严格按值传递。

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

public String getBasicData(DataSnapshot dataSnapshot) {

    return dataSnapshot.child("Users").getValue();
}

然后你可以在适当的地方使用它

textViewDataGet = getBasicData(dataSnapshot);

希望这会有所帮助:)