【问题标题】:How to set data to fragments (setArgumets() vs setters method)如何将数据设置为片段(setArguments() 和 setters 方法)
【发布时间】:2015-02-09 11:20:23
【问题描述】:

使用 bundle 和 set 参数设置数据是强制性的吗? 这里有什么问题?

MyFragment frag = new MyFragment ()
frag.setData(mSchoolData);

//add to back stack stuff.

【问题讨论】:

  • 你的意思是this
  • 是否要将对象“mSchoolData”传递给片段?
  • 这里的问题是系统可以重新创建碎片,你的数据会丢失。
  • 如果变量声明为静态,数据丢失怎么办?
  • @sUndeep 是的,它是一个对象

标签: android android-fragments


【解决方案1】:

通过使用 setArgs(),您将确保此 Fragment 可以由于生命周期事件而重新创建……而通过使用您自己的 setter 传递参数,它可能无法在某些情况下正常工作。这就是为什么绝对推荐使用 Args 或使用 Intent extras 的原因,如果片段被重新创建,这些将始终由系统自动提供。

【讨论】:

  • 如果我将变量声明为静态会怎样?
  • 这也可以..但通常不建议这样做,尽管它可能非常适合某些特定的解决方案。
  • 我的问题是出于好奇,我要补充一点,不鼓励使用静态变量,因为它们是全局的,如果你非常依赖静态变量,管理静态变量会变得非常非常讨厌。
  • @Alécio Carvalho 你的意思是有最佳实践..但这没有错吧? bcoz 我只支持纵向,每次我从服务器提供数据时
  • 我不会这样做,我只在特殊情况下使用静态变量,所以更喜欢其他解决方案,将它们作为最后的手段并谨慎使用。例如,通过使用静态变量,您必须确保正确取消设置它,否则可能会导致意外的内存泄漏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 2011-07-22
  • 2013-11-28
  • 1970-01-01
相关资源
最近更新 更多