【发布时间】:2011-10-19 19:37:52
【问题描述】:
我正在广泛使用 Android Fragments,我遇到的问题之一是缺乏将复杂对象传递给它的适当机制。
在Fragments 的android 开发人员文档中,他们有一个名为newInstance 的static 方法,它带有一些简单的参数,这些参数将被打包到Bundle 中并在Fragment 中使用。但是这种方法不能用于传递复杂的对象。
因为我经常使用 Fragments api,所以将复杂的对象传递给它变得越来越重要。一种方法是实现Parcelable 接口,我不想对所有类都这样做。
所以,我想我可以做到这一点:
- 在 Fragment 中定义这样的接口:
// Container Activity must implement this interface
public interface ReceiveDataInterface {
public MyClass getData(uniqueFragmentID);
}
使用该片段强制Activity实现接口并调用ReceiveDataInterface.getData(getArgument.getString(UNIQUEID))
- 在
Activity中使用newInstance方法通过传递uniqueFragmentID实例化片段并实现ReceiveDataInterface,它提供基于uniqueFragmentID的数据。
这样做是个好主意吗?如果不是,为什么?我应该怎么做呢?
注意:这是在与文档中描述的OnArticleSelectedListener 相同的行中完成的。
非常感谢任何帮助。
【问题讨论】:
-
如果您不想创建 Parcelable,您的方法在我看来还可以。我没有发现任何问题。
标签: java android android-fragments