【发布时间】:2016-08-30 21:38:59
【问题描述】:
我在FragmentPagerAdapter 中有以下逻辑
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
MyFragment myFragment = (MyFragment) object;
myFragment.onPrimaryItemSet();
}
其中MyFragment 是支持Fragment 即android.support.v4.app.Fragment。
问题是myFragment.onPrimaryItemSet() 需要通过 Fragment 的onCreate() 方法设置的实例数据,直到我最近从Android Support Library 23.2.1 更新到Android Support Library 24.2.0 才成为问题。
我回去发现以Android Support Library 24.0.0 开头的FragmentPagerAdapter.setPrimaryItem() 始终在作为Object 参数传递的片段的onCreate() 之前调用。而在Android Support Library 23.4.0 及之前的版本中,Fragment 始终是首先创建的。
我通读了documentation 和revision history,但找不到任何明确描述调用setPrimaryItem() 时片段状态的合约。因此,这很可能是支持库中的一个错误。
是否有人对此特定问题有任何解决方案/解决方法?谢谢!
【问题讨论】:
标签: android android-fragments android-support-library fragmentpageradapter