J'essaie d'implémenter un listenner dans un fragment qui me permette de savoir si des données changent dans l'activité mère.
Dans MainActiivty, j'ai ajouté ces lignes de code :
public ListenFromActivity activityListener;
public void setActivityListener(ListenFromActivity activityListener) {
this.activityListener = activityListener;
}
J'ai ensuite ajouté ces lignes dans la méthode onCreate de la MainActivity :
ConnectFragment connectFragment =new ConnectFragment() ;
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame,connectFragment ).commit();
// this for is used to change data for testing
for(int i=0; i<5;i++){
activityListener.doSomethingInFragment(1+"");
}
Dans ConnectFragment, j'ai d'abord implémenté mon interface :
public class ConnectFragment extends Fragment implements ListenFromActivity
Ensuite, dans la méthode onCreate, j'ai ajouté ces lignes :
((HomeActivity) getActivity()).setActivityListener(ConnectFragment.this);
Ensuite, j'ai mis en œuvre la méthode dans mon interface.
@Override
public void doSomethingInFragment(String str) {
System.out.println(" listener from connectFragment "+ str);
}
Voici enfin mon interface :
public interface ListenFromActivity {
void doSomethingInFragment(String str);
}