Я новичок в android
и firestore
.Я создал небольшое приложение, и всякий раз, когда я запускаю его, оно вылетает во время выполнения, даже если сборка успешно завершена.Ниже приведен код для основной деятельности и Logcat
для лучшего понимания.
package com.example.make;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.widget.TextView;
import com.google.firebase.firestore.DocumentChange;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.firestore.QuerySnapshot;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import io.opencensus.tags.Tag;
public class MainActivity extends AppCompatActivity {
private static final String Tag = "Firelog";
private List<Users> usersList;
private UsersListAdapter usersListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView mMainList = findViewById(R.id.main_list);
usersList = new ArrayList<>();
usersListAdapter = new UsersListAdapter(usersList);
mMainList.setLayoutManager(new LinearLayoutManager(MainActivity.this));
mMainList.setAdapter(usersListAdapter);
TextView mName = findViewById(R.id.item_name);
TextView mStatus = findViewById(R.id.item_status);
try {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("Users").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.d(Tag, "Error : " + e.getMessage(), new NullPointerException());
for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
doc.getDocument().getReference().collection("Users").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.d("", "Error :" + e.getMessage(), new NullPointerException());
}
for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
Log.d("USer Name :", doc.getDocument().getId());
}
}
}
});
Users users = doc.getDocument().toObject(Users.class);
usersList.add(users);
usersListAdapter.notifyDataSetChanged();
}
}
}
}
});
} catch (NullPointerException error) {
mName.setText(error.getMessage());
}
}
}
Это ошибка, которую я получаю,
12-03 13:59:30.576 26036-26036 / com.example.make E / AndroidRuntime: ФАКТИЧЕСКОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.example.make, PID: 26036 java.lang.NullPointerException: Попытка вызвать виртуальный метод 'java.util.List com.google.firebase.firestore.QuerySnapshot.getDocumentChanges () 'для пустой ссылки на объект в com.example.make.MainActivity $ 1.onEvent (MainActivity.java:65) в com.example.make.MainActivity $ 1.onEvent (MainActivity.java:56)) на com.google.firebase.firestore.Query.lambda $ addSnapshotListenerInternal $ 2 (com.google.firebase: firebase-firestore @@ 17.1.3: 885) на com.google.firebase.firestore.Query $$ Lambda $ 3.onEvent(com.google.firebase: firebase-firestore @@ 17.1.3) по адресу com.google.firebase.firestore.util.ExecutorEventListener.lambda $ onEvent $ 0 (com.google.firebase: firebase-firestore @@ 17.1.3: 42) на com.google.firebase.firestore.util.ExecutorEventListener $$ Lambda $ 1.run (com.google.firebase: firebase-firestore @@ 17.1.3) на android.os.Handler.handleCallback (Handler.java:754) на android.os.Handler.dispatchMessage (Handler.java): 95) на android.os.Looper.loop (Looper.java:163) на android.app.ActivityThread.main (ActivityThread.java:6383) на java.lang.reflect.Method.invoke (собственный метод) на ком.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)
Я также поставилtry catch
блок для перехвата исключения nullpointer, но он не работает. Любая помощь приветствуется.Спасибо.