Android 在传递到FragmentPagerAdapter.setPrimaryItem()之前未创建片段

Android 在传递到FragmentPagerAdapter.setPrimaryItem()之前未创建片段,android,android-fragments,android-support-library,fragmentpageradapter,Android,Android Fragments,Android Support Library,Fragmentpageradapter,我在一个FragmentPagerAdapter @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); MyFragment myFragment = (MyFragment) object; myFragment.onPrimaryItemSet(

我在一个
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()
需要通过片段的
onCreate()
方法设置实例数据,直到我最近从
Android支持库23.2.1
更新到
Android支持库24.2.0
,这才成为问题

我回去后发现,从Android Support Library 24.0.0开始,
FragmentPagerAdapter.setPrimaryItem()
始终在作为
对象
参数传递的片段的
onCreate()
之前被调用。而在Android Support Library 23.4.0及之前的版本中,始终首先创建片段

我通读了and,但找不到任何明确描述调用
setPrimaryItem()
时片段状态的约定。因此,这很可能是支持库中的一个bug

是否有人对此问题有任何解决方案/变通方法?谢谢

我已在AOSP问题跟踪程序中归档,在找到更好的解决方案之前,我正在使用以下解决方法:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    extractArguments();
}

private void extractArguments() {
    Bundle args = getArguments();
    feature = args.getParcelable(ARG_FEATURE);
}

public void onPrimaryItemSet() {
    if (feature == null) {
        extractArguments();
    }
    // business logic
}