0

我目前有一个带有三个选项卡 1,2 和 3 的 viewpageindicator。问题是当我滑动到选项卡 2 时,正在调用来自片段 3 的 onActivityCreated。

在我的标签 3 片段中,我将调用一个 asyntask onActivityCreated ,因此在切换片段 2 时,它将加载一个 asyntask。

4

2 回答 2

1

By default, ViewPagers load one Fragment on either side of the current Fragment. To know when a Fragment is in the centre, you could use the onPageChangeListener of the ViewPager in combination with an interface implemented by every Fragment subclass.

public interface FragmentChangeListener
{
void onCentered();
}

Implement this interface in every Fragment

public class CustomFragment extends Fragment implements FragmentChangeListener
{
....
 @Override
 public void onCentered()
 {
 //Show alertDialog and start asyncTask
 }
}

In your Activity class:

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();
  }
}
于 2013-02-06T02:12:12.107 回答
1

我认为您最好的选择是确定片段是否可见,以决定是否应该显示对话框。您可以在此处了解如何执行此操作:如何确定 Fragment 何时在 ViewPager 中可见

您可能应该考虑重新设计此交互,viewpager 旨在轻松地在视图之间滑动,弹出对话框可能会被证明是一种令人困惑的交互。

于 2013-02-06T02:10:24.170 回答