You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Repository navigation
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
EFragment should eliminate constructor requirements on abstract class #1081
The logic for EFragment gives an error if the EFragment annotated class has more than one constructor or if the constructor accepts any parameters. That rule makes sense for normal uses of EFragment since the FragmentBuilder needs to invoke the constructor on that class.
That rule however should not apply when the class it is annotating is abstract. In that case the constructor on the abstract class will never be called by AndroidAnnotations and will instead be called by constructors on the concrete subclass which should only have a default constructor (which can then call any constructor on the abstract class).
You are absolutely right. We also had this problem with EBeans, but now we
allow abstract ones with other constructors. I think we should do the same
with all enhanced components.
I added a PR that allows "other constructors" for abstract EFragments. It seems that for all other classes this is already allowed (or at least there is no constructor check).
The logic for EFragment gives an error if the EFragment annotated class has more than one constructor or if the constructor accepts any parameters. That rule makes sense for normal uses of EFragment since the FragmentBuilder needs to invoke the constructor on that class.
That rule however should not apply when the class it is annotating is abstract. In that case the constructor on the abstract class will never be called by AndroidAnnotations and will instead be called by constructors on the concrete subclass which should only have a default constructor (which can then call any constructor on the abstract class).