如果等于字符串在 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)
使用 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)