如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?

Posted

技术标签:

【中文标题】如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?【英文标题】:How to call AsyncTask from another fragment while using Tablayout with viewpager? 【发布时间】:2017-10-13 19:08:45 【问题描述】:

我试图从另一个片段而不是我声明 AsyncTask 的类调用 AsyncTask。我将自定义选项卡布局与 viewpager 一起使用。选项卡布局包含四个选项卡。我想在选择特定选项卡时调用 Web 服务。所以我在使用 tablayout 的主要片段中编写了 OnTabSelected()。我的 AsyncTask 在第二个选项卡中。我想在 OnTabSelected() 方法中选择第二个选项卡时调用 Web 服务。我是android开发的新手。那么如何才能做到这一点呢?

【问题讨论】:

【参考方案1】:

像这样使用viewpager's addOnPageChangeListener事件:

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) 

            
        );

注意页面位置从 0 开始,所以你的第二个标签位置是 1。

编辑:如何获取当前片段的实例

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

注意:如果你提供了标签,你可以使用 findFragmentByTag() 代替 findFragmentById

更新:

 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;
    

检查这个答案以获得更好的理解ig https://***.com/a/18611036/5895830

【讨论】:

如何获取当前片段的实例意味着第二个片段来执行任务?

以上是关于如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tabLayout 在 ViewPager 中显示片段?

使用ViewPager和TabLayout与Xamarin时出错

如何使用 Tablayout 清除 Viewpager 的缓存内存

如何使 tablayout 片段适合 INSIDE viewpager

android tablayout 与viewpager联动 怎样显示tab标题

TabLayout与ViewPager和FragmentFragmentPagerAdapter的合用