如何在android中刷新页面标签片段?
问题描述:
当我从Tab中滑动到另一个fragment
时,我必须刷新fragment
。如何在android中刷新页面标签片段?
@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();
}
我的适配器是这样
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
的方式。 如果我滑动选项卡或单击另一个选项卡,然后我需要再次刷新可见选项卡。 在我目前的fragment
没刷新。
请帮我解决这个问题。
答
当您必须刷新adapdter中的选项卡时,尝试使用片段状态寻呼机适配器而不是片段适配器。
FragmentPagerAdapter存储从适配器获取的以前的数据,而FragmentStatePagerAdapter在每次执行时都从适配器获取新值。
+0
我改变了这个样子 public class ViewPagerAdapter extends FragmentStatePagerAdapter { 这不工作 – AngelJanniee
答
在片段中有onHiddenChanged方法。
时调用隐藏状态(如由 片段是否隐藏()返回已经改变的片段开始时不隐藏;这将是 称为每当片段从改变状态
。覆盖onHiddenChanged
方法在每个标签片段,如果没有隐藏做清爽例如:
class YourFragment extends Fragment {
@Override public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
//you can refresh here now
}
}
}
使用后比断枝碎片状态寻呼机适配器适配器代码also.Try如果你正在使用的话。 – Anonymous
检查此链接我的朋友https://stackoverflow.com/questions/32435250/android-viewpager-refresh-fragment –
我已更新我的适配器类,请检查 – AngelJanniee