当用户可见时如何刷新选项卡?
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) {
}
});
我正在使用片段状态寻呼机适配器来处理不同片段的创建。
在我的应用程序中,开始选项卡是用户输入数据的地方,最后一个选项卡显示基于开始选项卡的报告。
问题是,当我进入报告选项卡时,除了之前的选项卡信息外,所有内容都正确显示。似乎它正在创建标签,然后才可见。
有什么方法可以让报告标签在可见时只加载吗?
我相信您可以覆盖 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) {
}
});