Reputation: 19
So I'm gonna calling my database from Firestore using Recycler View with FirebaseUi in my fragment but somehow every time I opened my app, the app stop working.
Here's my Fragment Contains Firestore Database.
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();
}
}
Upvotes: 1
Views: 902
Reputation: 199825
onCreate()
happens before onCreateView()
, so when you call getView()
in setUpRecyclerView()
, you get null
back - you haven't inflated the view yet.
Instead, you should put your setUpRecyclerView()
method within onViewCreated()
, at which time getView()
will return the view you inflated in onCreateView()
:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
setUpRecyclerView();
}
Upvotes: 1