用户看到标签后,如何刷新?

时间:2018-12-07 13:24:28

标签: android android-viewpager android-tabs

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

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

问题在于,当我进入“报告”标签时,除以前的标签信息外,所有内容均正确显示。似乎它是在标签可见之前创建的。

有什么方法可以使报告选项卡仅在可见时加载吗?

3 个答案:

答案 0 :(得分:0)

我相信您可以覆盖 setUserVisibleHint 方法,以获取有关香气的可见性的通知

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

答案 1 :(得分:0)

    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)

答案 2 :(得分:0)

为了更新选项卡,我必须通知数据集已更改为适配器,然后在视图寻呼机上将其重置。

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) {

        }
    });