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:
Si la méthode dans mon fragment est définie comme non static :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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){ ... } }
j'obtiens un nullPointer à la ligne fragment.openButtons(). Et ceci quelque soit le fragment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void openButtons(){//some stuff}
Si la méthode dans mon fragment est définie comme static :
ça passe...
Code : Sélectionner tout - Visualiser dans une fenêtre à part public static void openButtons(){//some stuff}
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 :
est tout autant fonctionnel!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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){ ... } }
Merci de m'éclaircir...
Partager