J'ai deux fragments dans mon MainAlactivité code>, je veux faire hériter le premier fragment hériter d'une méthode du deuxième fragment. Est-ce possible? P>
3 Réponses :
pas sans les deux fragments partageant le même parent. Vous pouvez créer une instance de fragment code> et appelez-le
basefragment code>, puis les deux fragments que vous créez sont des enfants de
basefragment code>. Ce ne sera pas le même exemple, mais vous aurez accès aux mêmes méthodes
Merci, je vais essayer ceci
Une approche peut être de rendre les deux fragments délégués au même objet, ce qui est plus en ligne avec le principe de préférence de composition sur l'héritage.
Voici un exemple: P>
class FragmentA : Fragment(), SharedMethodsDelegate by SharedMethods { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sharedMethod() } } class FragmentB : Fragment(), SharedMethodsDelegate by SharedMethods { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sharedMethod() } } interface SharedMethodsDelegate{ fun sharedMethod() } object SharedMethods : SharedMethodsDelegate { override fun sharedMethod() { print("hey") } }
Et si je veux hériter d'une propriété à partir du basefragment code> et incrémenter dans le
premier fragment code> reflétera-t-il dans le
secondfragment code>? Et sinon, comment puis-je le rendre possible?
Oui, vous pouvez avoir des propriétés var dans l'interface SharedMethodsDelegate
Une autre méthode consiste à extraire cette logique dans un autre objet, puis à utiliser cet objet dans les deux fragments. À moins que la méthode ne soit directement liée à la manipulation de la vue, ce serait ce que je suggère. Il rend également la méthode plus testable. P>