使用Firebase Firestore数据库构建Android聊天应用程序。
我想检查数据库中的消息是由当前用户还是另一个用户发送的。这样,我可以相应地向右或向左显示聊天气泡。但是,我无法进行比较,因为比较总是返回“ NOT TRUE”,尽管我不明白为什么。检查一下:
我正在将用户ID与我存储在Firestore中的发件人的用户ID进行比较。它们在日志中打印出相同的内容。但是当我在if语句中比较它们时。它说他们不平等。
public void getLiveChatMessages(final ArrayList<ChatConversationMessage> messageArrayList) {
db.collection("users")
.document(userID)
.collection("conversations")
.document("conversation0") //Specified conversation
.collection("messages")
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "Listen failed.", e);
return;
}
for (QueryDocumentSnapshot doc : value) {
if (doc.get("message") != null) {
String messageSender = doc.getString("From user with ID");
if (messageSender == userID){
Log.e(TAG, "the messageSender IS equal to the userID");
Log.e(TAG, "the messageSender: " + messageSender);
Log.e(TAG, "the userID: " + userID);
} else {
Log.e(TAG, "the messageSender is NOT equal to the userID");
Log.e(TAG, "the messageSender: " + messageSender);
Log.e(TAG, "the userID: " + userID);
}
}
Log.d(TAG, "Message: " + messageArrayList);
}
}
});
}
这是我的日志输出:
E /聊天:messageSender不等于用户ID
消息发件人:ypiXrobQxuZ0wplN5KO8gJR7Z4x2
用户ID:ypiXrobQxuZ0wplN5KO8gJR7Z4x2
他们怎么会不相等?
答案 0 :(得分:1)
使用
if (messageSender.equals(userID))
if (messageSender.equalsIgnoreCase(userID)) // its not case senstive
代替
if (messageSender == userID)
答案 1 :(得分:0)
对于字符串比较,请使用equalsIgnoreCase
即
if (messageSender.equalsIgnoreCase(userID))
{
.
.
.
}
else {
}