将数据从 Activity 发送到已创建的片段

Send data from Activity to Fragment already created

我只找到了有关如何创建向其发送一些数据的片段的信息,但仅限于使用构造函数对其进行实例化。

但我想知道是否可以将一些数据(例如,两个 Double 对象)从 Activity 发送到 Fragment 而无需创建 Fragment 的新实例。

一个之前创建的片段。

最简单的方法是在 Fragment 中定义一个接口并在 activity 中实现它。此 link 应提供有关如何实现此目的的详细示例。 https://developer.android.com/training/basics/fragments/communicating.html

我认为您要查找的关键部分在这里:

ArticleFragment articleFrag = (ArticleFragment)
      getSupportFragmentManager().findFragmentById(R.id.article_fragment);

if (articleFrag != null) {
    // If article frag is available, we're in two-pane layout...

    // Call a method in the ArticleFragment to update its content
    articleFrag.updateArticleView(position);
} else {
    // Otherwise, we're in the one-pane layout and must swap frags...

    // Create fragment and give it an argument for the selected article
    ArticleFragment newFragment = new ArticleFragment();
    Bundle args = new Bundle();
    args.putInt(ArticleFragment.ARG_POSITION, position);
    newFragment.setArguments(args);

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    // Replace whatever is in the fragment_container view with this fragment,
    // and add the transaction to the back stack so the user can navigate back
    transaction.replace(R.id.fragment_container, newFragment);
    transaction.addToBackStack(null);

    // Commit the transaction
    transaction.commit();
}

首先尝试通过调用 findFragmentById(R.id.fragment_id) 来检索片段,如果它不为空,您可以调用您在接口中定义的方法来向它发送一些数据。

您可以通过如下捆绑包传输任何数据:

Bundle bundle = new Bundle();
bundle.putInt(key, value);
your_fragment.setArguments(bundle);

然后在您的 Fragment 中检索数据(例如在 onCreate() 方法中):

Bundle bundle = this.getArguments();
if (bundle != null) {
        int myInt = bundle.getInt(key, defaultValue);
}

只需要在Fragment中添加一个你想要接收参数的方法,然后调用Activity中的方法即可。

Activity的代码:



片段代码: