gpt4 book ai didi

java - Android 将值存储在返回 null 的字符串中

转载 作者:行者123 更新时间:2023-12-02 02:52:40 25 4
gpt4 key购买 nike

我试图将从我的 Firebase 数据库中检索到的“接收者”和“发送者”的一些数据存储在代码中的字符串“room_type_1”和“room_type_2”中。数据已正常检索​​,但未传递给字符串。它不断返回 null。可能是什么问题?

databaseReference3.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

receiver = (String) dataSnapshot.child(user_id).child("username").getValue();
Log.v("postID2", receiver);

sender = (String) dataSnapshot.child(user_id).child("username1").getValue();

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});


room_type_1 = sender + "_" + receiver;
room_type_2 = receiver + "_" + sender;


databaseReference6 = databaseReference5.child(room_type_1);
databaseReference7 = databaseReference5.child(room_type_2);

sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = messageArea.getText().toString();

if (!message.equals("")) {

databaseReference6.push().setValue(new Messages(message, sender));
databaseReference7.push().setValue(new Messages(message, sender));
}
}
});

databaseReference6.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//Messages messages = dataSnapshot.getValue(Messages.class);
String message = (String) dataSnapshot.child("message").getValue();
String userName = (String) dataSnapshot.child("sender").getValue();

if(userName.equals(sender)){
addMessageBox("You:-\n" + message, 1);
}
else{
addMessageBox(receiver + ":-\n" + message, 2);
}

}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {

}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

}

最佳答案

给出的代码仅创建带有回调的对象。仅在执行所有这些行(包括赋值)后才会调用回调方法。例如,此刻该行

room_type_1 = 发送者 + “_” + 接收者;

执行时,发送方接收方都尚未设置为数据库中的值。

我建议您详细了解回调方法的工作原理。

要解决此问题,只需在分配 senderreceiver 后将分配移至回调方法即可。

请注意,以数字结尾的变量名称表明您应该使用数组或列表。

关于java - Android 将值存储在返回 null 的字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43566955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com