Injection by a constructor is more readable and you can easily distinguish
the part of a class that is connected with dependency injection from the rest.
Secondly, all the values are initialized from the very beginning of the existence of the class so you can use them for eg in initialization blocks.
The tests are cleaner, you exactly know what dependencies you should provide for the class under test or your code won't compile. With field injection, you need to set everything manually.
But all of that doesn't mean that there aren't use cases for field or method injection. Field injection is especially useful in android classes for which you don't have control over instantiation like Activity.
I tend to use field injection also in superclasses for which children I use constructor injection and I don't want to pollute constructors with common objects. Eg. I have BaseViewModel in which I inject ExceptionHandler on the field, this way I don't need to put that ExceptionHandler in every child class constructor and then pass upwards to the base.