当用户可见时如何刷新选项卡?

How can I refresh a tab when it becomes visible to the user?

我正在使用片段状态寻呼机适配器来处理不同片段的创建。

在我的应用程序中,开始选项卡是用户输入数据的地方,最后一个选项卡显示基于开始选项卡的报告。

问题是,当我进入报告选项卡时,除了之前的选项卡信息外,所有内容都正确显示。似乎它正在创建标签,然后才可见。

有什么方法可以让报告标签在可见时只加载吗?

我相信您可以覆盖 setUserVisibleHint 方法来获得有关 framgent

可见性的通知

https://developer.android.com/reference/android/support/v4/app/Fragment#setuservisiblehint

    OnPageChangeListener myOnPageChangeListener = new OnPageChangeListener(){ 
@Override public void onPageScrollStateChanged(int state) {
 //Called when the scroll state changes.

 } 

@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 //This method will be invoked when the current page is scrolled, //either as part of a programmatically initiated smooth scroll //or a user initiated touch scroll. 
} 


@Override public void onPageSelected(int position) {
//This method will be invoked when a new page becomes selected. 

        textMsg.append("onPageSelected:" + position + "\n"); }};

现在将此侦听器添加到您的 viewpager

viewPager.setOnPageChangeListener(myOnPageChangeListener)

为了更新选项卡,我不得不通知适配器数据集已更改,然后在视图分页器上将其重置。

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            if(tab.getPosition() == areas.size()){
                roundPagerAdapter.notifyDataSetChanged();
                viewPager.setAdapter(null);
                viewPager.setAdapter(roundPagerAdapter);
                viewPager.setCurrentItem(tab.getPosition());
            } else {
                viewPager.setCurrentItem(tab.getPosition());
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });