0

私はタブビュー内にビューページャを使用しました。私は自分のアクティビティで3つのタブを持っていました。各タブはフラグメントを有する。私はすべてのタブのOnCreateViewでasyncTaskを呼び出しました。すべてがうまくいきます。しかし、問題は、私が他のタブからasynctaskを始めたときに来る2番目のタブまたは3番目のタブも最初のtab.hereで呼び出されます。私のコードスニペットです。asyncTaskビューのページャフラグメントの最初のタブで呼び出された3番目のタブから

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日間からこの問題に引っかかっています。

答えて

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

どのようにiが選択されているページを知ることができますか。? –

+0

ビューアにリスナーを設定し、私の答えを更新します – nullvoid

+0

私はそれを試して、タブのアクティビティから自分のasynctaskメソッドを呼び出します。私はsqliteで応答を保存するときにonPost()にNPEをスローします。 –

関連する問題