Bonjour,
J'ai une activité appelons la MainFragment qui implémente un tab listener:
Les 3 tabs du viewPager correspondent à trois fragments qui gèrent des listviews : fichiers,musiques,images
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class MainFragment extends FragmentActivity implements ActionBar.TabListener { // le passage entre tab est géré par un tabsPagerAdapter }
exemple:
Je voudrais pouvoir récupérer des actions de l'utilisateur sur les items de l'actionbar crée dans MainFragment, ou sur le bouton back, ou home...et rafraîchir par exemple les listViews d'une activité en particulier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public class Music extends Fragment { // ici je gère une listView }
Sachant que je suis capable de déterminer quel fragment est à l'écran avec en récupérant la position par un int pagerPosition.
Est-ce possible?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(final int position) { pagerPosition = position; actionBar.setSelectedNavigationItem(position); } )};
Je me suis inspiré de ça:
http://envyandroid.com/archives/843/...nt-back-button
donc dans mon MainFragment:
et dans mon fragment Music:
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
22
23
24
25
26
27
28 public class MainFRagment extends FragmentActivity implements ActionBar.TabListener { private Music music; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pager); music = new Music(); getSupportFragmentManager().beginTransaction() .add(R.id.pager, music).commit(); //gestion du pager..etc } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.up: { // ici je renvoie vers une méthode dans mon fragment Music music.upPressed(); return true; } } return super.onOptionsItemSelected(item); } }
Cette méthode est censé recharger une gridView par un adapter...elle fonctionne puisque utilisée par le fragment par ailleurs.
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 class Music extends Fragment { ....... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.music, container, false); ..... } public void upPressed() { album_art.setVisibility(View.VISIBLE); album_text.setVisibility(View.VISIBLE); musicGridAdapter = new MusicGridAdapter(getActivity(), R.layout.row_music, gridAlbum,"Artistes"); getArtistes(getActivity()); Toast.makeText(getActivity(), "test pour voir...",Toast.LENGTH_SHORT).show(); } } .....
En débug le code est exécuté normalement...donc l'interaction fonctionne, par contre aucune modification sur l'UI...rien ne se passe sur la gridView..l'écran reste tel quel..
Seul le toast fonctionne..et affiche un message.
Je ne comprends pas pourquoi...merci pour votre aide.
Partager