【问题标题】:Getting Data inside a fragment from Activity从 Activity 获取片段内的数据
【发布时间】:2011-10-19 19:37:52
【问题描述】:

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

Fragments 的android 开发人员文档中,他们有一个名为newInstancestatic 方法,它带有一些简单的参数,这些参数将被打包到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


【解决方案1】:

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

【讨论】:

  • 这种方法似乎没问题。但是如果实例化了多个片段实例怎么办? Activity 将如何跟踪哪个 Fragment 正在寻找数据?
  • 然后你传递一个唯一的 id,就像你在问题中提到的那样。这种方法对我也很有效。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多