我目前有一个带有三个标签1,2和3的viewpageindicator。 问题是当我滑动到选项卡2时,正在调用片段3中的onActivityCreated。
在我的tab 3片段中,我将调用onyntask onActivityCreated,因此当切换片段2时,它将加载asyntask。
答案 0 :(得分:1)
我认为您最好的选择是确定片段是否可见,以决定是否应该显示您的对话框。您可以在此处了解如何执行此操作:How to determine when Fragment becomes visible in ViewPager
您可能应该考虑重新设计此交互,viewpager旨在轻松地在视图之间滑动,弹出对话框可能会让您感到困惑。
答案 1 :(得分:1)
默认情况下,ViewPagers在当前片段的任一侧加载一个片段。要知道片段何时位于中心,您可以将ViewPager的onPageChangeListener与每个Fragment子类实现的接口结合使用。
public interface FragmentChangeListener
{
void onCentered();
}
在每个片段中实现此接口
public class CustomFragment extends Fragment implements FragmentChangeListener
{
....
@Override
public void onCentered()
{
//Show alertDialog and start asyncTask
}
}
在您的Activity类中:
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
FragmentChangeListener listener = (FragmentChangeListener) //cast fragment at this position to FragmentChangeListener
listener.onCentered();
}
}