Firebase文档路径不能为空Android



你好,我在进行此游戏活动时遇到了null问题。在这里,我给您留下错误的代码和带有崩溃行的方法。也许我误解了什么,对不起我的英语。

错误代码:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.venomapps.tictactoeonline, PID: 20007
java.lang.NullPointerException: Provided document path must not be null.
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:906)
at com.google.firebase.firestore.CollectionReference.document(com.google.firebase:firebase-firestore@@21.4.0:103)
at com.venomapps.tictactoeonline.Activities.GameActivity.gameListener(GameActivity.java:136)
at com.venomapps.tictactoeonline.Activities.GameActivity.onStart(GameActivity.java:131)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
at android.app.Activity.performStart(Activity.java:7157)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

方法行:`

@Override
protected void onStart() {
super.onStart();
gameListener();
}
private void gameListener(){
listenerRegistration = database.collection("games")
.document(gameId)
.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if(e != null){
Toast.makeText(GameActivity.this, getString(R.string.try_again_later), Toast.LENGTH_LONG).show();
return;
}
assert documentSnapshot != null;
String source = documentSnapshot.getMetadata().hasPendingWrites() ? "Local" : "Server";
if(documentSnapshot.exists() && source.equals("Server")){
// Parsing documentSnapshot to Game object.
game = documentSnapshot.toObject(Game.class);
if(player1Name.isEmpty() || player2Name.isEmpty()){
getPlayerNames();
}
updateUI();
}
updatePlayersUI();
}
});
}

您的问题中没有包含足够的信息来确切了解发生了什么,但错误消息告诉您不能将null传递给document()。这意味着参数gameId为空。您必须仔细考虑您认为它应该具有什么值,并进行一些调试以找出它为null的原因。

最新更新