android - 不带参数将对象传递给 fragment

标签 android object android-fragments

如果我在不使用 bundle 的情况下将 object 传递给 fragment 会产生什么影响?我刚刚打开一个旧代码并在那里找到它并且忍不住问这个问题,因为我从未尝试过。我也没有在其中发现任何内存泄漏。

这是它的实现方式-

Activity 类:

MyFragment fragment =
        MyFragment.newInstance(getIntent().getStringExtra(DATA),
            instance.getCallback(),
            instance.getRequest());
    getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit();

fragment 类:

public class MyFragment extends Fragment {

  public MyFragment() {
    /* Required empty public constructor */
  }

  public static MyFragment newInstance(String data, Callback callback,
      Request request) {
    MyFragment fragment = new MyFragment();
    fragment.setCallback(callback);
    fragment.setRequest(request);
    fragment.setData(data);
    return fragment;
  }

  private void setCallback(Callback callback) {
    this.callback = callback;
  }

  private void setData(Data data) {
    this.data = data;
  }

  private void setRequest(Request request) {
    this.request = request;
  }
}

一般来说,到目前为止我使用的是 Fragment#setArguments(Bundle)

最佳答案

请查看此答案:Why its not recommended to pass object to fragment with simple getter setter .

长话短说,您将丢失有关配置更改的数据。

主要有两种与 fragment 通信的方式:通过包或通过您在 Activity 中实现的接口(interface)。请查看此链接以了解如何通过接口(interface)正确地与 fragment 通信:https://developer.android.com/training/basics/fragments/communicating

关于android - 不带参数将对象传递给 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669374/

相关文章:

android - 用于定位的手机加速度计在现实世界中的准确度是多少?

android - 如何设置 Android AppBar 操作文本的样式?

android - 如何在Android中运行Sample camera程序,进行拍照

java - 我来自 XML 的 VIEWS 或 WIDGETS 无法在扩展 fragment 类的类上使用 java

java - 通过循环从套接字读取数据时获取 "java.io.EOFException"

arrays - 如何快速将随机 UIColor 与颜色数组中的颜色进行比较?

java - 在 ArrayList 中插入具有不同值的对象

javascript - 在js对象中获取相同的订单数据

android - 在 pagerslidingtabstrip 中禁用页面滚动

java - 如何在另一个 Activity 的 fragment 中单击按钮时在另一个 Activity 中打开包含 webViews 的 fragment ?