0

タブから別のfragmentにスワイプするとfragmentを更新する必要があります。アンドロイドでページャのタブの断片を更新するには?

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
} 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 

    mBinding = DataBindingUtil.inflate(inflater, R.layout.manage_work_shop_act, container, false); 


    mBinding.layout.title.setText(getString(R.string.d_manage_my_staff)); 

    mBinding.tabs.setupWithViewPager(mBinding.viewpager); 
    setupViewPager(mBinding.viewpager); 

    mBinding.layout.nav.setVisibility(View.GONE); 
    mBinding.layout.navMenu.setVisibility(View.VISIBLE); 

    mBinding.layout.navMenu.setOnClickListener(view -> openDrawer()); 

    return mBinding.getRoot(); 
} 


private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 

    int limit = (adapter.getCount() > 1 ? adapter.getCount() - 1 : 1); 

    adapter.addFragment(new MechanicListFragment(), getString(R.string.d_manage_my_staff)); 
    adapter.addFragment(new MechanicNewFragment(), getString(R.string.new_frag)); 
    viewPager.setAdapter(adapter); 
    viewPager.setOffscreenPageLimit(limit); 

    adapter.notifyDataSetChanged(); 
} 

私のアダプタは、私は私のfragmentをリフレッシュするためにすべての方法を試してみました。この

public 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 addFragment(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
} 

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

のようなものです。 タブをスワイプするか、別のタブをクリックすると、表示されているタブをもう一度更新する必要があります。 私の現在ではfragmentは更新されませんでした。

この問題を無効にする手助けをしてください。

+0

ポストFRAGよりフラグメント状態のページャアダプタを使用して、アダプタのコードalso.Tryあなたが使用している場合は、アダプタを使用してください。 – Anonymous

+1

このリンクを確認するmy friend https://stackoverflow.com/questions/32435250/android-viewpager-refresh-fragment –

+0

アダプタークラスを更新しましたかチェックしてください – AngelJanniee

答えて

0

アダプターのタブを更新する必要がある場合は、フラグメントアダプターよりフラグメント状態のページャーアダプターを使用してみてください。

FragmentPagerAdapterはアダプタからフェッチされた以前のデータを格納し、FragmentStatePagerAdapterはアダプタが実行されるたびに新しい値を取得します。

+0

私はこのように変更しました public class ViewPagerAdapter extends FragmentStatePagerAdapter { これは機能しません – AngelJanniee

0

フラグメントにonHiddenChangedメソッドがあります。

呼び出さする 断片のisHidden()によって返される隠れ状態は、(変更されたときに断片が出て隠されていない開始する;こ​​れは フラグメントがそこから状態を変更するたびに呼び出される

。あなたのタブフラグメントのそれぞれにonHiddenChangedメソッドをオーバーライドして、隠されていない場合はリフレッシュを行う例:

class YourFragment extends Fragment { 

    @Override public void onHiddenChanged(boolean hidden) { 
     super.onHiddenChanged(hidden); 
     if (!hidden) { 
      //you can refresh here now 
     } 
    } 

} 
関連する問題