Sie entweder eine Schnittstelle erstellen und alle Fragmente diese Schnittstelle implementieren, und in Ihrem onWindowFocusChanged
Sie das aktuelle Fragment erhalten und das Verfahren zur Verfügung gestellt passieren aufrufen, indem Sie die Schnittstelle.
konnte Eine Probe Schnittstelle für die Fragmente sein:
public class MyFragment implements IOnFocusListenable {
....
public void onWindowFocusChanged(boolean hasFocus) {
...
}
}
Und im onWindowFocusChanged
Ihrer Aktivität können Sie dann folgendes tun:
public interface IOnFocusListenable {
public void onWindowFocusChanged(boolean hasFocus);
}
Ihre Fragmente diese Schnittstelle implementieren:
public class MyActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(currentFragment instanceof IOnFocusListenable) {
((IOnFocusListenable) currentFragment).onWindowFocusChanged(hasFocus);
}
}
}
Oder Sie erstellen einen Listener und das aktive Fragment wird dem Listener hinzugefügt. Wenn also das Fragment sichtbar gemacht wird, abonnieren Sie diesen Listener, und jedes Mal, wenn das Ereignis onWindowFocusChanged
aufgerufen wird, rufen Sie diesen Listener auf.
Dieser Ansatz ist sehr ähnlich den oben mit dem Unterschied, dass es eine Liste der IOnFocusListenable
‚s ist und diese werden in den Aktivitäten onWindowFocusChanged
Methode
Große Antwort, sehr hilfreich und ordentlich! – arniotaki