【问题标题】:AsyncTask with Fragment in ViewPagerViewPager 中带有 Fragment 的 AsyncTask
【发布时间】:2014-10-21 15:05:16
【问题描述】:

我正在尝试使用 AsyncTask 和 ProgressDialog 从 Fragment 中的服务器加载数据。 这是 PageAdapter 代码

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);

以及片段中的代码

@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();
        }
    }
}

我面临的问题是每次滑动到片段3时都会执行asyncTask。我只需要执行一次AsyncTask。

【问题讨论】:

    标签: android android-fragments android-asynctask android-viewpager


    【解决方案1】:

    你能设置一个阻止后续运行的标志吗?

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

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      相关资源
      最近更新 更多