interaction keyevent et action bar dans un fragment
Bonjour,
J'ai une activité appelons la MainFragment qui implémente un tab listener:
Code:
1 2 3 4
| public class MainFragment extends FragmentActivity implements
ActionBar.TabListener {
// le passage entre tab est géré par un tabsPagerAdapter
} |
Les 3 tabs du viewPager correspondent à trois fragments qui gèrent des listviews : fichiers,musiques,images
exemple:
Code:
1 2 3
| public class Music extends Fragment {
// ici je gère une listView
} |
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.
Sachant que je suis capable de déterminer quel fragment est à l'écran avec en récupérant la position par un int pagerPosition.
Code:
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);
}
)}; |
Est-ce possible?
Je me suis inspiré de ça:
http://envyandroid.com/archives/843/...nt-back-button
donc dans mon MainFragment:
Code:
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);
}
} |
et dans mon fragment Music:
Code:
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();
}
}
..... |
Cette méthode est censé recharger une gridView par un adapter...elle fonctionne puisque utilisée par le fragment par ailleurs.
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.