setUserVisibleHintも、私はフラグメント内のデータを更新するための別の方法を使用し、私を働いていないとき、ビューページャ変更フラグメント、以下の方法があり、
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
try {
if(viewPagerAdapter.getItem(position) instanceof Fragment1a){
Fragment1a frag1 = (Fragment1a) viewPagerAdapter.getItem(position);
frag1.updateData(data); // here is the public method of fragment which declared for udpate data in fragment
}else if(viewPagerAdapter.getItem(position) instanceof Fragment1b){
Fragment1b frag2 = (Fragment1b) viewPagerAdapter.getItem(position);
frag2.updateData(data); // here is the public method of fragment which declared for udpate data in fragment
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewpager.setCurrentItem(0);
あなたは1人の国民を作成する必要があり、直接だけでデータを更新することができますこの方法あなたの断片の中にここで
はViewPager`アダプタ `の`のgetItem() `内部アダプタ
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<TabModel> 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 addFragment(Fragment fragment, TabModel title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position).getTabName();
}
}
ですが、私は常に新しい' Fragment'を作成します。例、 'public Fragment getItem(int position){ if(位置== 0){ 新しいFragment1a()を返します。 } return新しいFragment1b(); } '。したがって、getItemを呼び出すと、いつでも新しいフラグメントが作成されます –
さて、その問題を引き起こしている可能性があります。そのために配列を定義する必要があります。 –
ありがとう。私はそれが良い解決策だと思う –