【问题标题】:Passing data to fragment via Bundle OR a public method defined inside fragment通过 Bundle 或在片段中定义的公共方法将数据传递给片段
【发布时间】:2016-05-03 12:54:13
【问题描述】:

谁能说出以下将数据共享到片段的方法之间的区别。

  • 使用捆绑包。

        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;
        }
    

【问题讨论】:

    标签: java android android-activity fragment


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 2022-10-02
          相关资源
          最近更新 更多