我正在尝试从另一个片段调用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