0
votes

Comment partager des propriétés et des méthodes entre les fragments dans l'activité principale

J'ai deux fragments dans mon MainAlactivité , je veux faire hériter le premier fragment hériter d'une méthode du deuxième fragment. Est-ce possible?


0 commentaires

3 Réponses :


1
votes

pas sans les deux fragments partageant le même parent. Vous pouvez créer une instance de fragment et appelez-le basefragment , puis les deux fragments que vous créez sont des enfants de basefragment . Ce ne sera pas le même exemple, mais vous aurez accès aux mêmes méthodes xxx


1 commentaires

Merci, je vais essayer ceci



2
votes

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")
    }
}


2 commentaires

Et si je veux hériter d'une propriété à partir du basefragment et incrémenter dans le premier fragment reflétera-t-il dans le secondfragment ? Et sinon, comment puis-je le rendre possible?


Oui, vous pouvez avoir des propriétés var dans l'interface SharedMethodsDelegate



2
votes

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.


0 commentaires