è possibile creare un'interfaccia e tutti i tuoi frammenti implementare questa interfaccia, e dentro il vostro onWindowFocusChanged
si ottiene il frammento corrente e passare chiamare il metodo fornito da l'interfaccia.
Un'interfaccia di esempio per i frammenti potrebbe essere:
public interface IOnFocusListenable {
public void onWindowFocusChanged(boolean hasFocus);
}
I suoi frammenti devono implementare questa interfaccia:
public class MyFragment implements IOnFocusListenable {
....
public void onWindowFocusChanged(boolean hasFocus) {
...
}
}
E nel onWindowFocusChanged
della vostra attività si può quindi fare quanto segue:
public class MyActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(currentFragment instanceof IOnFocusListenable) {
((IOnFocusListenable) currentFragment).onWindowFocusChanged(hasFocus);
}
}
}
Oppure si crea un listener e il listino attivo viene aggiunto al listener. Quindi, se il frammento è reso visibile, ti iscrivi a questo listener e ogni volta che viene chiamato l'evento onWindowFocusChanged
chiami questo listener.
Questo approccio è molto simile al precedente con la differenza che c'è una lista di IOnFocusListenable
's e quelli si verificano in attività onWindowFocusChanged
metodo
Ottima risposta, molto utile e pulito! – arniotaki