Appeler une méthode non static dans un fragment depuis l'activité parente.
Bonjour à tous,
J'ai donc une activité qui manage 4 fragments par l’intermédiaire d'un ViewPagerAdapter. Depuis cette activité je voudrais appeler la méthode du fragment visible et en cours:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public void openButtons(){
//mPosition est la position du pager
if (mPosition==0){
Fragment1 fragment = (Fragment1) getSupportFragmentManager().findFragmentById(R.id.fragment1);
fragment.openButtons();
}
if (mPosition==1){
Fragment2 fragment = (Fragment2) getSupportFragmentManager().findFragmentById(R.id.fragment2);
fragment.openButtons();
}
if (mPosition==2){
....
}
if (mPosition==3){
...
}
} |
Si la méthode dans mon fragment est définie comme non static :
Code:
public void openButtons(){//some stuff}
j'obtiens un nullPointer à la ligne fragment.openButtons(). Et ceci quelque soit le fragment.
Si la méthode dans mon fragment est définie comme static :
Code:
public static void openButtons(){//some stuff}
ça passe...
A noter que le contenu de la méthode n'est pas en cause , puisque le problème est le même avec une méthode vide.
Ma question est donc: pourquoi est on obligé de définir le méthode comme static car dans ces conditions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void openButtons(){
if (mPosition==0){
Fragment1.openButtons()
}
if (mPosition==1){
Fragment2.openButtons()
}
if (mPosition==2){
....
}
if (mPosition==3){
...
}
} |
est tout autant fonctionnel!
Merci de m'éclaircir...