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



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

像这样使用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

最新更新