从Activity中获取片段内的数据

时间:2011-10-19 19:37:52

标签: java android android-fragments

我正在广泛地使用Android Fragment,我遇到的一个问题是缺乏将复杂对象传递给它的适当机制。

Fragments的android开发人员文档中,他们有一个名为static的{​​{1}}方法,调用了一些简单的参数,这些参数将打包成newInstance并在Bundle。但是,此方法不能用于传递复杂对象。

因为我一直在使用Fragments api,所以将复杂的对象传递给它变得越来越重要。一种方法是实现Fragment接口,我不想为所有类做这些接口。

所以,我以为我能做到这一点:

  • 在片段中定义这样的界面:
Parcelable

使用此片段强制活动来实现界面并调用 // Container Activity must implement this interface public interface ReceiveDataInterface { public MyClass getData(uniqueFragmentID); }

  • 使用ReceiveDataInterface.getData(getArgument.getString(UNIQUEID))方法在Activity实例化片段中传递newInstance并实施uniqueFragmentID,根据ReceiveDataInterface提供数据。

这样做是个好主意吗?如果没有,为什么?我应该怎么做呢?

注意:这与文档中描述的uniqueFragmentID行相同。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我们将这种方法用于我们为Android构建的任何应用程序。它运作良好。我没有测试过这样做的每种方法,但我认为这是最好的方法之一。

答案 1 :(得分:0)

另一种方法是使片段本身独立。为什么不编写从Fragment本身的网络/数据库中获取数据的代码?