【发布时间】:2018-04-20 10:04:19
【问题描述】:
我遇到了一个奇怪的问题,我有一个带有 三个片段的 ViewPager。
在所有这三个片段中,我将我的 image 对象作为捆绑传递。
public static InfoFragment newInstance(Image image,String path) {
Bundle args = new Bundle();
args.putParcelable("object",image);//passing my image object
args.putString("path",path);
InfoFragment fragment = new InfoFragment();
fragment.setArguments(args);
return fragment;
}
然后在 onCreate 中检索它。在 onCreate 中成功检索了图像对象,但是当我尝试在 onCreateView 中访问它时,图像对象只有 id 和标题。tags 变为空。
我的 Image 类是这样的
public class Image implements Parcalable{
private String id;
private String title;
private HashMap<String,String> tags;
//getters/setters
//parcalable things
}
注意: 这种奇怪的行为发生在 ViewPager 的第三个片段中,前两个片段一切正常。
【问题讨论】:
-
你试过设置 .setOffscreenPageLimit() 吗?如果增加立即创建的 Fragment 的数量也可以解决您的空对象,那么这显然是生命周期问题...
-
我总共有 3 个片段,是的,我已经尝试过 setOffScreenPageLimit(3)。
-
@Gotiasits 我附上了我的浏览器的截图。
-
非常有趣。您是否尝试过在
getItem()中切换片段的顺序以确保它始终是第三个片段,而不是那个特定的实例?顺便说一句,我有类似的要求,我使用了由 Fragment 实例控制的 Singleton。 -
@Gotiasits 是的,我已经尝试过了,它总是在第三个片段中给出这个问题。更有趣的是,我调试了程序,它正在检索 onCreate 中的值并将其存储为 Image 对象的一部分,但是当涉及到 onCreateView 时,Image 对象会丢失 hashmap 对象,并且仍然具有其他字段,例如 id 和 title。
标签: android android-fragments hashmap android-viewpager