Я пытаюсь сделать простую браузерную игру в старом стиле, такую как Tanoth / OGame, но на Android. Я использую базу данных Cloud Fire Store, но у меня есть проблема.
После входа в систему я передаю в строку String, содержащую имя персонажа пользователя. После этого я хочу получить мой объект PGCharacter из базы данных простым запросом. В начале класса я объявляю переменную PGCharacter, но не инициализирую ее.
В методе onCreate я инициализирую базу данных и коллекцию, в которой хранятся все мои символы. Я создаю ссылку на документ с помощью ExtraString in Intent, поскольку все мои идентификаторы документов совпадают с именами пользователей проигрывателя. После этого я делаю запрос, и если я нахожу снимок, я хочу инициализировать мой объект PGCharacter с моим результатом Снимка. Проблема в том, что каждый раз, когда я хочу напечатать что-то из моего Объекта, он падает. Надеюсь, я хорошо объяснил проблему.
Как я могу решить это? Я даже пытался добавить внешнюю функцию, но она не работала.
PS для моих тестов я использую уже существующий плеер
Вот мой код класса:
package com.github.albertocoder97.archadia;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class CharacterActivity extends AppCompatActivity {
private FirebaseFirestore db;
private CollectionReference characterCollection;
private PGCharacter pgCharacter;
private TextView usernameTextView;
private TextView goldTextView;
private TextView gemsTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_character);
//Initialize the database
db = FirebaseFirestore.getInstance();
//Get characters database
characterCollection = db.collection("characters");
Intent intent = getIntent();
String characterName = intent.getStringExtra("CHARACTER_NAME");
Log.i("myFilter", "Intent input: " + characterName);
//Initializing PGCharacter Object
DocumentReference charDocReference = characterCollection.document(characterName);
Log.i("myFilter", "ID: " + charDocReference.getId());
charDocReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Log.i("myFilter", "Inner Gold DocumentSnapshot: " + documentSnapshot.get("gold").toString());
setPGCharacter(documentSnapshot);
}
});
}
public void setPGCharacter(DocumentSnapshot snapshot){
PGCharacter temp = snapshot.toObject(PGCharacter.class);
pgCharacter = temp;
}
}
P.P.s я попытался войти в систему snapshot.getData (), и я получаю все мои данные PGCharacter, если кто-нибудь спросит, в моем классе PGCharacter у меня есть открытый пустой конструктор и все get для каждого свойства.