如何在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没刷新。

请帮我解决这个问题。

+0

使用后比断枝碎片状态寻呼机适配器适配器代码also.Try如果你正在使用的话。 – Anonymous

+1

检查此链接我的朋友https://*.com/questions/32435250/android-viewpager-refresh-fragment –

+0

我已更新我的适配器类,请检查 – AngelJanniee

当您必须刷新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 
     } 
    } 

}