我正在 Android Studio 中制作一个应用程序。由于以下问题,我被困住了。 我想将第一行中的房间字符串更改为 void onDataChange 中房间字符串的值。我已经尝试了很多东西,但它的值始终为空。
private String room;
@Override
protected void onCreate(Bundle savedInstanceState) {
ref = new Firebase("https://firebase.com/users/" + getPhoneId().toString() + "/" + receivingUser.toString());
ref.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
room = (String) snapshot.child("room").getValue().toString();
setRoom(room);
}
public void onCancelled(FirebaseError firebaseError) {
}
});
super.onCreate(savedInstanceState);
mFirebaseRef = new Firebase(FIREBASE_URL).child("chat/" + room);
最佳答案
您的代码的问题在于以下代码块是回调,在触发相关事件之前不会执行。
ref.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
room = (String) snapshot.child("room").getValue().toString();
setRoom(room);
}
public void onCancelled(FirebaseError firebaseError) {
}
});
以上代码仅创建ValueEventListener
子类的对象。创建类的对象不会自动调用它的所有方法。因此,上面的代码中并没有调用onDataChange
方法。随后,以下代码块将始终将 room
视为 null
:
mFirebaseRef = new Firebase(FIREBASE_URL).child("chat/" + room);
关于java - 字符串未设置为正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694368/