任何人都可以告诉以下将数据共享到片段的方法之间有什么区别。
使用Bundle。
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
使用片段内定义的公共方法。
MyFragment fragment = new MyFragment();
fragment.setData("param");
public void setData(String param1) {
this.param1 = param1;
}
答案 0 :(得分:3)
Bundle
内置并受框架支持。如果Fragment
由于生命周期而被框架自动拆除并重新创建,您仍然可以获得Bundle
。
在第二种情况下,如果param1
被拆除并重新创建,则框架不会自动重新创建私有数据成员Fragment
。这与使用Fragment
的重载构造函数的原因相同。
答案 1 :(得分:0)
如果您想向Bundle
提供数据,请使用fragment
,但想在fragment
内决定何时使用此数据。
如果您想将数据传递给已经处于活跃状态的fragment
,并希望即时响应fragment
,请使用方法调用。
答案 2 :(得分:0)
此外,您还需要拥有要从中访问数据的类的实例。 这可能会导致内存泄漏 如果经常使用公共方法而不是bundle, 通过捆绑包,您可以通过Android消息机制无需任何引用来共享数据