2017-05-05 2 views
3

Nehmen wir an, ich habe eine Klasse, ChildFragment, die von einem ParentFragment erbt. Der Zweck besteht darin, mehrere Aktivitäten und Fragmente mit Schaltflächen zu verwenden, die häufig von einem ParentFragment behandelt werden.Wie rufe ich die Methode eines Kindes von der Elternklasse auf?

Wenn der Benutzer eine Aktualisierungsschaltfläche drückt, wird eine -Funktion in der ParentFragment aufgerufen. Das Herunterladen dieser Datei wird jedoch von ChildFragment übernommen, da jedes Fragment einen anderen Inhalt hat. Also möchte ich, dass dieses ParentFragment etwas im Kind aufruft, sobald die fertig ist.

Wie kann ich das tun? Oder wenn es einen besseren Weg gibt, würde es auch helfen.

+0

Legen Sie eine virtuelle Aktualisierung in Parent und rufen Sie es auf. Kind muss es überschreiben. –

+1

Sie meine 'Zusammenfassung' nicht virtuell :) –

Antwort

5

Sie müssen die refresh Methode in untergeordneten Fragmenten überschreiben.

public class PFragment extends Fragment{ 
    protected void refresh(){ 
    //Common stuff here 
    } 
} 

In Kindklasse ovveride die Refresh-Methode

public class CFragment extends PFragment{ 
public void onClick(){ 
    super.refresh(); 
} 

@Override 
protected void refresh(){ 
//Custom stuff here 
} 

} 
+0

Aber beachten Sie die Eltern Refresh-Methode wird nicht ausgeführt, es sei denn Sie Super.refresh() hinzufügen, um die Kind-Klasse-Refresh-Methode –

+0

Bearbeitete die Antwort –

1
class ParentFragment() { 

    protected void refresh() { 
     // general code when refresh every fragment 
    } 
} 

class ChildFragment1 extend ParentFragment { 
    @Override 
    public void refresh() { 
     super.refresh(); 
     // code for refresh child fragment1 
    } 
} 

class ChildFragment2 extend ParentFragment { 
    @Override 
    public void refresh(); { 
     super.refresh(); 
     // code for refresh child fragment2 
    } 
} 
1

Wenn Sie Refresh nicht die untergeordneten Klassen wollen implementieren und super.refresh nennen, eine abstrakte Methode in der Definition ParentFragment für die Downloadfile Methode, implementieren diese dann im Kind (ern) Klassen:

class ParentFragment { 
    public void refresh() { 
     downloadFile(); 
    } 

    protected abstract void downloadFile(); 
} 

class ChildFragment extends ParentFragment { 
    @Override 
    protected void downloadFile() { 
     // do the download here 
    } 
} 
1

EventBus! - vereinfacht die Kommunikation zwischen den Komponenten

Verwandte Themen