1

AsyncTask 및 ProgressDialog를 사용하여 Fragment의 서버에서 데이터를로드하려고합니다. 여기 이ViewPager의 조각이있는 AsyncTask

여기
public class TabPagerAdapter extends FragmentPagerAdapter { 
    public TabPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 
    @Override 
    public Fragment getItem(int i) { 
     switch (i){ 
      case 0: return new Fragment1(); 
      case 1: return new Fragment2(); 
      case 2: return new Fragment3(); 
     } 
     return null; 
    } 
    @Override 
    public int getCount() { 
     return 3; 
    } 
} 

내가 조각에 어댑터

viewPager = (ViewPager) findViewById(R.id.pager); 
     actionBar = getActionBar(); 
     mAdapter = new TabPagerAdapter(getSupportFragmentManager()); 

     viewPager.setAdapter(mAdapter); 

그리고 코드를 사용하는 방법입니다 PageAdapter 코드

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    appContext= (SApplication) getActivity().getApplicationContext(); 
    mList.clear(); 
    this.rootView = inflater.inflate(R.layout.fragment_event, container, false); 
    mListView = (ListView)rootView.findViewById(R.id.events); 
    this.asycnTask=new HttpRequestTask(getActivity()); 
    return rootView; 
} 
@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     if(asycnTask.getStatus().equals(AsyncTask.Status.PENDING)) { 
      this.asycnTask.execute(); 
     } 
    } 
} 

내가 직면하고있어 문제는 AsyncTask를한다는 것입니다 내가 조각 3으로 쓸어 넘기 때마다 실행됩니다. AsyncTask를 한 번만 실행하면됩니다.

답변

0

후속 실행을 차단하는 플래그를 설정할 수 있습니까?

private boolean wasAlreadyRunOnce; 
. 
. 
. 

    if (isVisibleToUser && !wasAlreadyRunOnce) { 
      if(asycnTask.getStatus().equals(AsyncTask.Status.PENDING)) { 
       this.asycnTask.execute(); 
       wasAlreadyRunOnce = true; 
      } 
    }