Android 如何使用FirebaseUi在片段中调用Firestore数据库?
因此,我将使用片段中带有FirebaseUi的Recycler视图从Firestore调用我的数据库,但每次我打开应用程序时,应用程序都会停止工作 这是我的片段,包含Firestore数据库Android 如何使用FirebaseUi在片段中调用Firestore数据库?,android,firebase,google-cloud-firestore,firebaseui,Android,Firebase,Google Cloud Firestore,Firebaseui,因此,我将使用片段中带有FirebaseUi的Recycler视图从Firestore调用我的数据库,但每次我打开应用程序时,应用程序都会停止工作 这是我的片段,包含Firestore数据库 public class Fragment_HomeSpot extends Fragment { private FirebaseFirestore db = FirebaseFirestore.getInstance(); private CollectionReference spotRef = db
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();
}
}
公共类片段\u主点扩展片段{
私有FirebaseFirestore db=FirebaseFirestore.getInstance();
私人收藏参考spotRef=db.collection(“Spot”);
专用点适配器;
@SuppressLint(“资源类型”)
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
返回充气机。充气(R.id.recyclerview_布局,容器,假);
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setUpRecyclerView();
}
私有void setUpRecyclerView(){
Query Query=spotRef.orderBy(“”,Query.Direction.DESCENDING);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,Spot.class)
.build();
适配器=新的SpotAdapter(选项);
RecyclerView RecyclerView=Objects.requireNonNull(getView()).findViewById(R.id.RecyclerView\u布局);
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
recyclerView.setAdapter(适配器);
}
@凌驾
public void onStart(){
super.onStart();
adapter.startListening();
}
@凌驾
公共void onStop(){
super.onStop();
adapter.stopListening();
}
}
onCreate()
发生在onCreateView()
之前,因此当您在setUpRecyclerView()
中调用getView()
时,返回null
,您还没有扩展视图
相反,您应该将setUpRecyclerView()
方法放在onViewCreated()
中,此时getView()
将返回在onCreateView()中膨胀的视图:
这就是onCreateView()
所做的-因此在该方法中调用inflate
。
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
setUpRecyclerView();
}