FragmentStatePagerAdapter
从 API 27 开始已弃用。替代方案是什么FragmentStatePagerAdapter
?
private class MainPagerAdapter extends FragmentStatePagerAdapter {
MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment result = new DummyFragment();
return result;
}
@Override
public int getCount() {
return 5;
}
}
上面的代码显示FragmentStatePagerAdapter
, getItem(...)
and super(...)
已弃用。
切换到ViewPager2 https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2并使用片段状态适配器 https://developer.android.com/reference/androidx/viewpager2/adapter/FragmentStateAdapter反而。
从那里您可以使用 onPause 和 onResume 回调来确定哪个片段当前对用户可见。当片段变得可见时调用 onResume,当片段不再可见时调用 onPause。 ->阅读更多 https://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager/57888432#57888432
根据评论Eric https://stackoverflow.com/users/4233804/erik-jhordan-rey and Reejesh https://stackoverflow.com/users/14784590/reejesh.
旧答案(现在也已弃用)
以下构造函数执行相同的操作
super(@NonNull FragmentManager fm)
super(@NonNull FragmentManager fm, BEHAVIOR_SET_USER_VISIBLE_HINT)
Passing BEHAVIOR_SET_USER_VISIBLE_HINT
已被弃用。你应该通过BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
反而。
通过这些的差异在中解释FragmentPagerAdapter
:
/**
* Indicates that Fragment#setUserVisibleHint(boolean) will be
* called when the current fragment changes.
*/
@Deprecated
public static final int BEHAVIOR_SET_USER_VISIBLE_HINT = 0;
/**
* Indicates that only the current fragment will be
* in the Lifecycle.State#RESUMED state. All other Fragments
* are capped at Lifecycle.State#STARTED.
*/
public static final int BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT = 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)