【问题标题】:ViewPager's Third Fragment is not storing HashMap in AndroidViewPager 的第三个 Fragment 不在 Android 中存储 HashMap
【发布时间】: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


【解决方案1】:

还有其他解决方案可以实现这一点,即创建一个 HashMap 的常量静态最终变量并从任何位置访问或更新此 HasMap。

public static final HashMap<String,String> variableName;

【讨论】:

    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多