添加片段取决于Loader结果

时间:2013-12-12 15:40:10

标签: android user-interface android-fragments android-sqlite loader

我的目标是写一个信使活动。现在有两种消息实现:
  - 简单文字
  - 画廊
在我的messenger Activity中,我使用LoaderManager.LoaderCallbacks函数来异步查询我的数据库中的Messages表。该查询返回(以及其他信息):
  - 它是什么样的消息(简单文本或图库)
  - 特定类型表格中该数据的ID是什么(例如,图库会显示满是图片的表格)

现在我有一个简单文本片段和一个Gallery。那些需要数据的ID,然后使用Loader在DB中查询其表。理想情况下,我只是为每条消息动态添加特定于类型的片段。

在伪代码中:

function allMessagesAreLoaded() {
    for (message : messages) {
        if message is simpleTextMessage then
            add simpleTextMessageFragment
        else if message is gallery then
            add galleryFragment
        end if
    }
}



现在我的问题:
根据此来源,在这种情况下使用碎片不是最佳做法:http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html
有什么方法可以在运行时根据数据库查询结果以编程方式添加封装的布局和函数集/类?

也许我正在从错误的方向看它。我没有创建Android用户界面的经验。任何正确方向的尖端/点都会对我有所帮助:-)

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

不确定这是否是一个很好的解决方案,但这就是我现在所做的:
我把我在Fragment中拥有的所有内容都放在一个单独的类中。我在创建它时将Context和LoaderManager从Activity切换到class-object。它以这种方式工作,我的代码被封装。活动的代码少得多。因此,当我达到目标时,我猜可能有更好的方法。

相关问题