0

J'essaie d'appeler le AsyncTask à partir d'un autre fragment plutôt que de la classe où j'ai déclaré la tâche AsyncTask. J'ai utilisé la disposition de l'onglet personnalisé avec viewpager. La disposition des onglets contient quatre onglets. Je souhaite appeler un service Web lorsqu'un onglet particulier est sélectionné. Alors que j'ai écrit le OnTabSelected() dans le fragment principal dans lequel j'ai utilisé tablayout. Mon asyncTask est dans le deuxième onglet. Je veux appeler le webservice lorsque le second onglet est sélectionné dans la méthode OnTabSelected(). Je suis nouveau dans le développement Android. Alors, comment faire cela?Comment appeler AsyncTask à partir d'un autre fragment en utilisant Tablayout avec viewpager?

Répondre

0

événement utilisation viewpager's addOnPageChangeListener comme ceci:

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

      } 

      @Override 
      public void onPageSelected(int position) { 
       if(position == 1){ 
        //call your webservice here 
       } 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

note commence par 0 cette position de page pour votre deuxième position onglet est 1.

modifier: comment obtenir instance du fragment courant

Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container); 
if (f instanceof SecondFragmentClass) { 
    f.doSomething(); 
} 

note: vous pouvez utiliser findFragmentByTag() à la place de findFragmentById, si vous avez fourni l'étiquette

mise à jour:

if(position == 1){ 
     Fragment page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + ViewPager.getCurrentItem()); 
     // based on the current position you can then cast the page to the correct 
     // class and call the method: 
     if (page != null) { 
       ((SecondFragmentClass)page).updateList("new item");  
     } 
    return true; 
    } 

Cocher cette ans pour une meilleure understandig https://stackoverflow.com/a/18611036/5895830

+0

Comment puis-je prendre l'exemple du fragment courant signifie second fragment pour exécuter la tâche? – vaibhav

+0

vérifier ma réponse mise à jour –