来自第三个选项卡的asyncTask在View分页器片段的第一个选项卡中调用

时间:2017-01-26 09:06:31

标签: android android-asynctask android-viewpager fragment android-tablayout

我在标签视图中使用了查看分页器我的活动中有3个标签。每个标签都有一个片段。我在所有选项卡的OnCreateView中调用了asyncTask。一切都很好。但问题是当我第一个选项卡上的asynctask来自所有其他第二个选项卡或第三个选项卡也会在第一个选项卡中调用。这是我的代码片段。

TabActivity:

  class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    } 

FirstTab:

  @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view=inflater.inflate(R.layout.fragment_current, container, false);



 RequestNetworkcall();
return view;}

我在最近2天的租约中遇到了这个问题,请帮助我们。

1 个答案:

答案 0 :(得分:0)

Viewpager总是初始化它的三个页面,就像它可见一样。 这意味着你的所有页面都已经调用了他们的onResume()方法。

当选择该页面时,您需要调用您的asynctask。

更新:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            if (position == 3) {
                //Call your asynctask here
            }

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });