![](/img/trans.png)
[英]how to call fragment from another fragment in tablayout with viewpager
[英]How to call AsyncTask from another fragment while using Tablayout with viewpager?
我试图从另一个片段而不是在我声明AsyncTask的类中调用AsyncTask。 我将自定义标签布局与viewpager一起使用。 选项卡布局包含四个选项卡。 选择特定选项卡后,我想调用Web服务。 这样我在使用tablayout的主片段中编写了OnTabSelected()。 我的AsyncTask在第二个标签中。 我想在OnTabSelected()方法中选择第二个选项卡时调用Web服务。 我是android开发的新手。 那么如何做到这一点呢?
使用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;
}
检查此ans以更好地理解ig https://stackoverflow.com/a/18611036/5895830
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.