현재 3 개의 탭 1,2 및 3이있는 뷰 페이지 색인이 있습니다. 문제는 탭 2로 스 와이프하여 조각 3의 onActivityCreated가 호출되는 것입니다.스 와이프 전에 ViewPagerIndicator - onActivityCreated가 호출되었습니다.
내 탭 3 조각에서 나는 asyntask onActivityCreated를 호출하므로 조각 2가 전환 될 때 asyntask가로드됩니다.
현재 3 개의 탭 1,2 및 3이있는 뷰 페이지 색인이 있습니다. 문제는 탭 2로 스 와이프하여 조각 3의 onActivityCreated가 호출되는 것입니다.스 와이프 전에 ViewPagerIndicator - onActivityCreated가 호출되었습니다.
내 탭 3 조각에서 나는 asyntask onActivityCreated를 호출하므로 조각 2가 전환 될 때 asyntask가로드됩니다.
기본적으로 ViewPages는 현재 Fragment의 양쪽에 하나의 Fragment를로드합니다. Fragment가 중앙에 언제 있는지 알기 위해서는 모든 Fragment 서브 클래스에 의해 구현 된 인터페이스와 함께 ViewPager의 onPageChangeListener를 사용할 수 있습니다.
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는 페이지를 볼 수있는 페이지의 왼쪽과 오른쪽으로로드하여 스크롤 할 때 내용을 볼 수 있도록해야합니다. – sgarman
이것이 문제가되는 이유는 프래그먼트 3이 alertdialog 및 asyntask를 호출하여 조각 2로 전환 할 때 문제를 일으킬 수 있기 때문입니다 – ericlee