如果等于字符串在 Firestore 快照侦听器中不起作用

If Equal to String Doesn't Work in Firestore Snapshot Listener

使用 Firebase Firestore 数据库构建 Android 聊天应用。

我想检查数据库中的消息是由当前用户还是其他用户发送的。这样,我可以相应地向右或向左显示聊天气泡。但是,我无法比较,因为比较总是 returns "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/chat: messageSender 不等于 userID

消息发件人:ypiXrobQxuZ0wplN5KO8gJR7Z4x2

用户ID:ypiXrobQxuZ0wplN5KO8gJR7Z4x2

怎么会不相等呢???

对于字符串比较,使用 equalsIgnoreCase

if (messageSender.equalsIgnoreCase(userID))
{
.
.
.
}
else {
}

Refer this

使用

if (messageSender.equals(userID))
if (messageSender.equalsIgnoreCase(userID)) // its not case senstive

而不是

if (messageSender == userID)