将数据从活动传递到片段多次

时间:2016-01-05 14:45:06

标签: android android-fragments

我有一个2X2嵌套的arraylist,其中包含一个活动中的数据。片段一次使用一行arraylist数据并执行一些处理。在该过程之后,需要下一行数据。我不想向片段发送比它需要的更多数据。因此,我需要多次将数据传递给片段。实现这一目标的最佳方法是什么?

注意:我尝试使用bundle,但无法重复使用。我收到错误“Fragment is Active。”

3 个答案:

答案 0 :(得分:0)

您可以使用LocalBroadcastManager制作它。

将有两个接收器,一个在活动中作为receiver1,另一个在片段中作为receiver2,当你想从活动发送数据,发送带有数据的广播然后receiver2可以接收它。如果你想从活动中获得更多数据,发送广播然后receiver1可以接收它并发送更多数据。

答案 1 :(得分:0)

您可以使用Android开发者培训网站上描述的方法,这里是link

如果要将数据从Activity发送到Fragment,可以使用TAG(在添加/替换片段时提供)从片段管理器中获取片段。当你得到片段时,你可以调用它的公共方法来传递数据。

使用标签启动片段

FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.container, new MyFragment(), "MyFragmentTag");

使用标签

在Activity中获取片段
MyFragment fragment = (MyFragment) manager.findFragmentByTag("MyFragmentTag");
if (fragment != null)
{
    fragment.passData(myData);
}

** passData是片段MyFragment中的公共函数。

答案 2 :(得分:0)

我想你最好的选择是为片段添加一些公共方法,然后从活动中访问它。

或多或少它应该是这样的:

的活动:

fragment = new YourFragment();
fragment.setArguments(bundle);
getFragmentTransaction().replace(R.id.container, fragment).commit();

///// somewhere else in the activity
fragment.setNewDataRow(newData);

片段:

public void setNewDataRow(DataRow dataRow) {
    // do what you need to do and update view etc.
}

这应该是你需要的:)