Я уже прочитал и изменил свой код в соответствии с тем, что рекомендуется в этом посте .
Тем не менее, моя проблема все еще сохраняется, получая ту же ошибку:
java.lang.RuntimeException: No properties to serialize found on class com.blush.android.blush.chat.chatCloudCommunications.ChatCloudSentMessageToFirestore$Counter
Я запускаю все ниже в публичном классе под названием ChatCloudSentMessageToFirestore . Я пропустил «createCounter», «getCounter» и «incrementCounter», которые определены в одном классе. Я делаю это для того, чтобы код был коротким, и потому что он идентичен тому, что определено на веб-сайте Firebase Firestore: https://firebase.google.com/docs/firestore/solutions/counters, поэтому вряд ли будет причиной ошибки (если только они не нуждаются в каких-либо изменениях, которые я незнаю)
public class Counter {
int numShards;
public Counter(int numShards) {
this.numShards = numShards;
}
}
// counters/${ID}/shards/${NUM}
public static class Shard {
int count;
public Shard(){}
public Shard(int count) {
this.count = count;
}
}
У меня также есть эта ссылка в том же классе:
DocumentReference counterChrisDocRef = db.collection("users")
.document("ypiXrobQxuZ0wplN5KO8gJf934")
.collection("conversations")
.document("conversation0") //Specified conversation
.collection("messageCounter")
.document("shards");
и я пытаюсь использовать счетчики в этом методе:
public void addSentMessageToFirestoreDB(final Map<String, Object> messageSent) {
WriteBatch batch = db.batch();
createCounter(counterChrisDocRef, 1);
incrementCounter(counterChrisDocRef, 1);
DocumentReference chrisSentMessageRef = db.collection("users")
.document("ypiXrobQxuZ0wplN5KO8gJf934")
.collection("conversations")
.document("conversation0") //Specified conversation
.collection("messages")
.document("message" + getCount(counterChrisDocRef) + " (sent)");
batch.set(chrisSentMessageRef, messageSent);
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});