Iam使用带有三个 fragment 菜单的内置Navigation抽屉 Activity ,我想通过这些 fragment 进行通信,这意味着要将数据从一个传递到另一个。我发现有三种与 fragment 进行通信的方式。我也清楚地了解到该 fragment 永远不会直接通信。
现在我的问题是与 fragment 进行通信的最佳方式,目前Iam使用的是
second method
,即我将所有这些对象放入Globalized objects which extends Application Class
的方法(getter&setter类)。这是正确的方法吗? 最佳答案
您可以在Object类中实现Serializable,然后仅使用 bundle 将其传递。我假设您正在从first_fragment中启动second_fragment。
在您的第一个 fragment 中:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
Fragment2 fragment2 = new Fragment2();
Bundle bundle = new Bundle();
YourObj obj = SET_YOUR_OBJECT_HERE;
bundle.putSerializable("your_obj", obj);
fragment2.setArguments(bundle);
ft.replace(android.R.id.content, fragment2);
ft.addToBackStack(null);
ft.commit();
在 fragment 二中:
Bundle bundle = getArguments();
YourObj obj= (YourObj) bundle.getSerializable("your_obj");
编辑
要序列化对象,只需在Object类中实现Serializable。
如果您的Object类是YourObj.class
public class YourObj implements Serializable {
int id;
String name;
// GETTERS AND SETTERS
}