2017-09-06 3 views
5

Je souhaite passer une valeur à l'intérieur d'un clic de bouton avec la modification du fragment d'onglet viewpager. J'ai deux questions.Transmettre des données avec viewpager.setCurrentItem (position)

  1. Quelle est la meilleure façon de transmettre des données?
  2. Si j'utilise des données statiques, quel sera le problème? comme par exemple:

    public static string abc="" 
    
    case R.id.IVActionMore: 
    ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.tabs_viewpager); 
    viewPager.setCurrentItem(3); 
    //abc = "action"; 
    break; 
    
+1

Avez-vous essayé ** addOnPageChangeListener ** –

+0

Eh bien pour moi il n'y a pas de problème dans l'utilisation de chaîne statique, je l'utilise aussi pour passer quelques informations autour – Pulkit

+1

je ne barboté dans le développement Android, mais il y avait des objets de contexte que vous devriez utiliser pour mettre des données. Une statique n'est pas une bonne idée car elle n'est pas contrôlée par le concept de cycle de vie, de sorte que votre application peut être rechargée sans remarquer et les données ont disparu. – daniu

Répondre

1

Vous pouvez utiliser la préférence partagée pour définir et obtenir les données. l'utilisation de statique n'est pas une bonne idée. vérifier le lien

https://stackoverflow.com/a/23024962/4549220

+0

Est-ce le meilleur moyen de transmettre des données? –

+1

Vous pouvez vérifier ceci: https://stackoverflow.com/questions/4878159/whats-the-best-way-to-share-data-between-activities https://stackoverflow.com/questions/7885276/how- partager-même-données-entre-multiples-activités-dans-android – Tariqul

1
  1. Utilisez addOnPageChangeListener

addOnPageChangeListener void (auditeur ViewPager.OnPageChangeListener) Ajouter un auditeur qui sera invoquée chaque fois que les changements de page ou est défilement incrémentiel.

Comment?

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float 
        positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) 
    { 

    if(position == 3) 
    { 
      // DO your work 
    } 

    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 

    } 
}); 

Surclic

buttonOBJ.setOnClickListener(new OnClickListener() 
    { 
      @Override 
      public void onClick(View v) 
      { 
       viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true); 
      } 
    }); 
+0

Je veux changer la page en cliquant sur le bouton. –

+0

@ t.gakk vérifier la réponse mise à jour –

+0

merci pour votre rediffusion. mais "Ne pas utiliser de STATIQUE, ce n'est pas une bonne approche". Quelle est la meilleure approche? et comment puis-je l'utiliser dans votre code. –