所以我打算在我的片段中使用带有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();
}