Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当选项卡对用户可见时,如何刷新它?_Android_Android Viewpager_Android Tabs - Fatal编程技术网

Android 当选项卡对用户可见时,如何刷新它?

Android 当选项卡对用户可见时,如何刷新它?,android,android-viewpager,android-tabs,Android,Android Viewpager,Android Tabs,我正在使用片段状态寻呼机适配器来处理不同片段的创建 在我的应用程序中,开始选项卡是用户输入数据的地方,最后一个选项卡显示基于开始选项卡的报告 问题是,当我进入“报告”选项卡时,除前面的选项卡信息外,所有内容都正确显示。它似乎是在显示选项卡之前创建的 有没有办法在报表选项卡变为可见时只加载它?我相信您可以覆盖setUserVisibleHint方法,以获得有关FramAgent可见性的通知 现在将此侦听器添加到viewpager viewPager.setOnPageChangeListener

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

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

问题是,当我进入“报告”选项卡时,除前面的选项卡信息外,所有内容都正确显示。它似乎是在显示选项卡之前创建的


有没有办法在报表选项卡变为可见时只加载它?

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

现在将此侦听器添加到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) {

        }
    });

如何调用来重新创建片段?您不需要重新创建片段,只需重新加载数据即可
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) {

        }
    });