如何使用FirebaseUI在片段中调用Firestore Database ?



所以我打算在我的片段中使用带有FirebaseUI的Recycler View从Firestore调用我的数据库,但不知何故,每次我打开我的应用程序时,应用程序都会停止工作。

这是我的片段包含 firestore 数据库。

public class Fragment_HomeSpot extends Fragment {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference spotRef = db.collection("Spot");
private SpotAdapter adapter;
@SuppressLint("ResourceType")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.id.recyclerview_layout,container,false);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setUpRecyclerView();
}

private void setUpRecyclerView() {
Query query = spotRef.orderBy("",Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Spot> options = new FirestoreRecyclerOptions.Builder<Spot>()
.setQuery(query, Spot.class)
.build();
adapter = new SpotAdapter(options);
RecyclerView recyclerView = Objects.requireNonNull(getView()).findViewById(R.id.recyclerview_layout);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}

onCreate()发生在onCreateView()之前,所以当你在setUpRecyclerView()中调用getView()时,你会得到null- 你还没有夸大视图。

相反,你应该把你的setUpRecyclerView()方法放在onViewCreated(),这时getView()将返回你在onCreateView()中膨胀的视图:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
setUpRecyclerView();
}

相关内容

最新更新