0

나는 탭보기 내에서보기 호출기를 사용했습니다. 내 활동에 3 개의 탭이 있습니다. 각 탭에는 단편이 있습니다. 모든 탭의 OnCreateView에서 asyncTask를 호출했습니다. 모든 것이 잘 작동합니다. 하지만 문제는 내가 다른 탭에서 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 : 내가 지난 3 일 임대에서이 문제에 끼 었어

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

나에게 사람을 도와줍니다.

답변

0

Viewpager는 표시되는 것처럼 3 페이지를 항상 초기화합니다. 그러면 모든 페이지에서 이미 onResume() 메소드를 호출했습니다.

해당 페이지가 선택되면 asynctask를 호출해야합니다.

UPDATE :

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

     } 
    }); 
+0

은 어떻게 선택되어있는 페이지를 알 수 있습니다.? –

+0

viewpager에 수신기를 설정하고 내 대답을 업데이트 – nullvoid

+0

나는 그것을 시도하고 탭 활동에서 내 asynctask 메서드를 호출합니다. 하지만 그것은 sqlite에 응답을 저장할 때 onPost()에 NPE를 던졌습니다. –