blubsy Posté(e) 15 janvier 2016 Share Posté(e) 15 janvier 2016 Bonjour,voilà j'ai un soucis dans la mise en place d'un viewPager. Je m'explique, j'ai un fichier AbstractFragment ou je crait un viewpager :mSliderAdapter = new SliderAdapterNewsDetails(MyApp.APP_CONTEXT);mViewPager = (ViewPager) view.findViewById(R.id.pager);mViewPager.setAdapter(mSliderAdapter); Là, pas de pb.J'ai donc aussi un fichier SliderAdapterNewsDetails extends PageAdapterDans celui ci je modifis mes données sans pb et j'ai aussi trouvé comment faire un clique sur un button. Maintenant j'aimerais lancer une action lorsque la page apparaît à l'écran et non lorsqu'elle est chargé :Lorsqu'on arrive sur la page une image de la vue doit disparaître au bout de X seconde.Mon pb c'est qu'actuellement lorsque je met en place une action celle ci est activer sur la page visible mais aussi sur les pages charger et non visible. Comment je peux faire pour rendre l'action active uniquement sur la vue visible ? Merci par avance pour votre aide. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gob0 Posté(e) 15 janvier 2016 Share Posté(e) 15 janvier 2016 Salut, essayes de surcharger la méthode onHiddenChanged de ton fragment. Cette fonction reçoit un boolean qui indique si le fragment est visible ou non. La doc: http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
blubsy Posté(e) 15 janvier 2016 Auteur Share Posté(e) 15 janvier 2016 Toujours les mêmes qui aide, vraiment merci beaucoup. Bon je testerais ça demain matin merci. Blubsy Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
blubsy Posté(e) 18 janvier 2016 Auteur Share Posté(e) 18 janvier 2016 Bonjour, bon je ne m'en sort pas... Je m'explique plus en détails : J'ai une AbstractFragment : public class FragmentNews extends AbstractFragment implements View.OnTouchListener, Animation.AnimationListener { Avec dedans la création d'un ViewPager : mSliderAdapter = new SliderAdapterNewsDetails(MyApp.APP_CONTEXT); mViewPager = (ViewPager) mView.findViewById(R.id.pager); mViewPager.setAdapter(mSliderAdapter); Mon SliderAdapterNewsDetails est un PagerAdapter public class SliderAdapterNewsDetails extends PagerAdapter implements Animation.AnimationListener { Je peux dans mon PagerAdapter modifier mes élements sans problème : TextView titleTextView = (TextView) view.findViewById(R.id.news_title); titleTextView.setText("mon texte"); Mais voilà lorsque je veux mettre une action spécifique dans la page visible et là je suis perdu. Petit explication : Je veux lancer une action au bout de x seconde lorsque la page s'affiche. Si je met cette action dans le pageAdapter, cette action ce produit dans la page visible mais aussi dans la page charger (et non visible). Comment je peux lui indiquer de ne faire l'action que lorsque la page est visible (à l'écran). MERCI par avance pour votre aide. Blubsy Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gob0 Posté(e) 19 janvier 2016 Share Posté(e) 19 janvier 2016 Salut, avec si peu de code, difficile de bien voir les interactions entre les composants. Dans le ViewPager (mViewPager), tu peux savoir si la page change avec ce code (non testé): mViewPager.setOnPageChangeListener(new OnPageChangeListener() { // This method will be invoked when a new page becomes selected. @[member=override] public void onPageSelected(int position) { Toast.makeText(HomeActivity.this, "Selected page position: " + position, Toast.LENGTH_SHORT).show(); } // This method will be invoked when the current page is scrolled @[member=override] public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // Code goes here } // Called when the scroll state changes: // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING @[member=override] public void onPageScrollStateChanged(int state) { // Code goes here } }); Il faut remplacer "HomeActivity" par le nom de classe de ton activity. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
blubsy Posté(e) 19 janvier 2016 Auteur Share Posté(e) 19 janvier 2016 Bonjour, bon j'ai avancé dans mon schmilblik (merci Studio OPZO). Désormais avec public void onPageSelected(int position) dans le fichier AbstractFragment j'obtiens le numéro de la page active. Je renvois cette donnée à ma page PagerAdapter et je peux ou non déclencher mon action. Maintenant mon problème c'est de déclencher l'action lorsqu'on change de page. Je m'explique : L'action que je lance sur un élément de ma page est activer lorsque la vue est charger. Hors dans un viewpager la vue principal est charger mais aussi les vue suivante (ou précédente). Je voudrais lancer une action (que je fait actuellement dans mon PagerAdapter) uniquement sur la vue visible. J'espère avoir été assé clair dans mes explications et vous remerci pour votre aide. blubsy Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gob0 Posté(e) 19 janvier 2016 Share Posté(e) 19 janvier 2016 La vue visible c'est celle dont le numéro est donné par le onPageSelected, non? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
blubsy Posté(e) 19 janvier 2016 Auteur Share Posté(e) 19 janvier 2016 Oui c'est ça. J'ai donc bien l'affichage du numéro de la page visible est c'est sur cette vue que je voudrais mettre en place l'action comme par exemple : layone.setVisibility(View.GONE); Ce que j'ai du mal à faire (et à comprendre) c'est comment récupérer l'élément d'une vue alors qu'on est dans le AbstractFragment et que la vue à été géré dans le PagerAdapter. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gob0 Posté(e) 19 janvier 2016 Share Posté(e) 19 janvier 2016 Là, il faut regarder le (les) fichiers XML de layout pour voir comment s'imbriquent les éléments. Et ajouter des "getters" pour accéder aux éléments dont tu as besoin. (si tu passes tes variables en public, je viens te chercher pour te coller un coup de pied au c*l :angry: :P ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
blubsy Posté(e) 20 janvier 2016 Auteur Share Posté(e) 20 janvier 2016 MDR mais non mais non pas en public (.............AAAAAAAAAAAAAAAAAAAAAAAA.............). Bon je vais regarder tous ça cette après midi. J'ai vraiment envie de progresser mais je galère pour comprendre comment tous s'imbrique... MERCI BEAUCOUP POUR TOUTE TON AIDE. blubsy Rien à voir : je viens de voir ton site et j'adore, ce soir je montre ça à ma fille (5 ans), elle va adorer... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.