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

时间:2018-08-10 10:02:23

标签: android firebase if-statement google-cloud-firestore snapshot

使用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

他们怎么会不相等?

2 个答案:

答案 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 {
}

Refer this