gpt4 book ai didi

android - 在传递给 FragmentPagerAdapter.setPrimaryItem() 之前未创建 fragment

转载 作者:太空狗 更新时间:2023-10-29 14:46:49 35 4
gpt4 key购买 nike

我在 FragmentPagerAdapter 中有以下逻辑

@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
MyFragment myFragment = (MyFragment) object;
myFragment.onPrimaryItemSet();
}

其中 MyFragment 是一个支持 Fragmentandroid.support.v4.app.Fragment

问题是 myFragment.onPrimaryItemSet() 需要 Fragment 的 onCreate() 方法设置的实例数据,直到我最近从 Android 支持库 23.2.1Android 支持库 24.2.0

我回头发现,从 Android Support Library 24.0.0 开始,FragmentPagerAdapter.setPrimaryItem() 始终在 onCreate() 之前被调用> 作为 Object 参数传递的 Fragment。而在 Android Support Library 23.4.0 及之前的版本中,Fragment 总是首先创建。

我通读了 documentationrevision history , 但在调用 setPrimaryItem() 时找不到任何明确描述 fragment 状态的契约(Contract)。因此,这很可能是支持库中的错误。

有人对此特定问题有任何解决方案/解决方法吗?谢谢!

最佳答案

我已经提交了 this issue在 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
}

关于android - 在传递给 FragmentPagerAdapter.setPrimaryItem() 之前未创建 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237498/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com