Android 如何将数据发送到 运行 片段

Android how to send data to a running fragment

有没有办法将一些数据从 activity 发送到 运行 片段? 在我的应用程序中,我在另一个片段上添加了第二个片段。我有意使用 add 方法而不是 replace 方法。所以现在我想用

隐藏我的第二个片段
fragmentManager.popBackStack();

我的第一个片段又出现了。隐藏第二个片段后,我想将一些数据从 activity 发送到静止的 运行 第一个片段。

知道怎么做吗?它不适用于捆绑包(额外放置),因为我不重建片段,我只是隐藏第二个片段!

你可以使用像this这样的EventBus库,它简单易用,非常方便。

您可以在创建片段时在片段上使用标签,以便在需要时调用它们。

getFragmentManager().beginTransaction()
                .add(R.id.content, new SomeFragment(), SomeFragment.class.getSimpleName())
                .commit();

所以上面我在创建时使用class的简单名称来标记片段并将其添加到activity。

SomeFragment fragment = (SomeFragment) getFragmentManager().findFragmentByTag(SomeFragment.class.getSimpleName());

我可以在需要时调用它,并且知道它像上面那样显示,现在我可以通过调用自定义片段中的 public 方法并将其传递给它来像往常一样发送数据数据作为参数。

一个简单的解决方案是:

MyFragment oldFragment = (MyFragment) fragmentManager.findFragmentById(R.id.fragment_place);

fragmentManager.popBackStackImmediate();

MyFragment newFragment = (MyFragment)fragmentManager.findFragmentById(R.id.fragment_place);
newFragment.postData(...);