2011-10-19 45 views
1

我正在与Android Fragment进行非常广泛的合作,我遇到的一个问题是缺少将复杂对象传递给它的适当机制。从活动中获取片段中的数据

在为Fragments Android开发者文档,他们有一个static方法称为newInstance调用将被打包成一个BundleFragment内部使用一些简单的参数。但是,这种方法不能用于传递复杂的对象。

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

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

  • 像这样定义一个接口的片段:
 

// Container Activity must implement this interface 
public interface ReceiveDataInterface { 
    public MyClass getData(uniqueFragmentID); 
} 
 

使用该片段来实现该接口并调用ReceiveDataInterface.getData(getArgument.getString(UNIQUEID))强制活动

  • Activity实例化片段使用newInstance方法,通过传递uniqueFragmentID并实现ReceiveDataInterface,该数据基于uniqueFragmentID提供数据。

这样做是个好主意吗?如果不是,为什么?我该如何去做这件事?

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

任何帮助,非常感谢。

+0

如果你不想创建一个parcelable,你的方法对我来说看起来不错。我没有发现任何错误的地方。 –

回答

0

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

+0

这种方法似乎很好。但是,如果实例化多个碎片实例呢?活动如何跟踪哪个片段正在搜索数据? – 500865

+0

然后你传递一个像你在你的问题中提到的唯一的ID。这种方法也适用于我。 –

0

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