通过Bundle或片段内定义的公共方法将数据传递给片段

时间:2016-05-03 12:54:14

标签: java android android-activity fragment

任何人都可以告诉以下将数据共享到片段的方法之间有什么区别。

  • 使用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;
        }
    

3 个答案:

答案 0 :(得分:3)

Bundle内置并受框架支持。如果Fragment由于生命周期而被框架自动拆除并重新创建,您仍然可以获得Bundle

在第二种情况下,如果param1被拆除并重新创建,则框架不会自动重新创建私有数据成员Fragment。这与使用Fragment的重载构造函数的原因相同。

答案 1 :(得分:0)

如果您想向Bundle提供数据,请使用fragment,但想在fragment内决定何时使用此数据。

如果您想将数据传递给已经处于活跃状态的fragment,并希望即时响应fragment,请使用方法调用。

答案 2 :(得分:0)

此外,您还需要拥有要从中访问数据的类的实例。 这可能会导致内存泄漏 如果经常使用公共方法而不是bundle, 通过捆绑包,您可以通过Android消息机制无需任何引用来共享数据