如何在将 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