There was a time where fragments were rather hard to use : not really in sync with the activity lifecycle and introduce a lot of complexity (new lifecycles methods, random state loss crashes, asynchronous fragment transactions...).
That's why some Android developers learned the lesson and started to advocate against using them, preferring custom Views.
Today, fragments have been improved a lot, and IMHO are better than having to maintain a bunch of activities.
Not 2 projects have the same architecture. Use fragments, ViewModels or Navigation Component if those make sense for you project. There is no "best solution", try them and see if it makes your life easier. That's why software engineering is a creative field 😉