我目前有三個標籤1,2和3的viewpageindicator。 問題是當我滑動到標籤2時,正在調用片段3的onActivityCreated。ViewPagerIndicator - onActivityCreated在刷卡之前調用
在我的選項卡3片段中,我將調用asyntask onActivityCreated,因此當片段2被切換時,它將加載一個asyntask。
我目前有三個標籤1,2和3的viewpageindicator。 問題是當我滑動到標籤2時,正在調用片段3的onActivityCreated。ViewPagerIndicator - onActivityCreated在刷卡之前調用
在我的選項卡3片段中,我將調用asyntask onActivityCreated,因此當片段2被切換時,它將加載一個asyntask。
默認情況下,ViewPagers在當前Fragment的任一側加載一個Fragment。要知道Fragment何時位於中心,可以將ViewPager的onPageChangeListener與每個Fragment子類實現的接口結合使用。
public interface FragmentChangeListener
{
void onCentered();
}
落實在每一個片段
public class CustomFragment extends Fragment implements FragmentChangeListener
{
....
@Override
public void onCentered()
{
//Show alertDialog and start asyncTask
}
}
這個接口在活動類:
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();
}
}
我認爲你最好的選擇是確定片段是否可見或是否決定你是否應該顯示你的對話框。你可以在這裏瞭解如何做到這一點:How to determine when Fragment becomes visible in ViewPager
這是可能的,你應該考慮重新設計這種互動,viewpager被設計成在視圖之間輕鬆滑動並彈出對話框可能被證明是一個混淆的交互。
爲什麼這是一個問題嗎? ViewPagers必須將頁面加載到可見頁面的左側和右側,以便在滑動時看到內容。 – sgarman
這是一個問題的原因是,片段3將調用alertdialog和asyntask這將導致問題,當我切換到片段2 – ericlee