2015-02-09 49 views
4

是否必须使用包设置参数来设置数据? 这里有什么问题?如何将数据设置为片段(setArgumets()vs setters方法)

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

//add to back stack stuff. 
+0

你的意思是[this](http://stackoverflow.com/a/25564388/4385913)? – 2015-02-09 11:23:00

+0

是否要将对象“mSchoolData”传递给fragment? – sUndeep 2015-02-09 11:26:13

+0

这里的问题是碎片可以被系统重新创建,你的数据将会丢失。 – Tobrun 2015-02-09 11:27:36

回答

5

使用setArgs(),您将确保该片段可以重现由于生命周期事件......同时,通过传递参数用自己制定者可能无法正确在某些circustances工作。这就是为什么绝对推荐使用Args或使用Intent extras,如果片段被重新创建,这些将总是由系统自动提供。

+0

如果我将该变量声明为Static,该怎么办? – Skynet 2015-02-09 11:28:19

+0

也可以工作..但它通常不是一个推荐的做法,虽然它可能适合某些特定的解决方案。 – 2015-02-09 11:29:48

+0

我的问题出于好奇,我会补充一点,使用静态变量是不鼓励的,因为它们是全局性的,如果你依赖很多静态变量,它会变得非常非常令人讨厌。 – Skynet 2015-02-09 11:30:57