为什么fragmentnew出来之后只推荐使用setArguments传递数据在不想使用序列化的时候如何解决
简书链接:为什么fragmentnew出来之后只推荐使用setArguments传递数据在不想使用序列化的时候如何解决
文章字数:242,阅读全文大约需要1分钟
为什么fragment new出来之后只推荐使用getArguments()获取数据在不想使用序列化的时候如何解决
1 | TabVideoFragment tab1VideoFragment = TabVideoFragment.class.newInstance(); |
1 | Bundle arguments = getArguments(); |
有时候可能想写序列化,这个时候我想当然的直接fragment.setObject()传递一些数据进去,可是会发现获取为空,是见鬼了么?不?
1 | public TabVideoFragment() { |
1 | .TabVideoFragment: HASHCODE:44966402 |
会发现调用2次,说明什么?当fragmentManager里面有一个fragment的时候他是直接给new一个 然后从参数里取出来,所以你白弄了。。这也是比较方便优化内存吧,存储的数据通过他这么一搞,都给你抖掉
了
所以我这里用的方式是通过activity的接口来从activity里面拿数据.
另外一种方式就是通过eventbus也是可以拿到数据的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 情迁博客!
评论