【问题标题】:Fragment display different content片段显示不同的内容
【发布时间】:2021-05-13 03:09:45
【问题描述】:

我可以根据在前一屏幕中选择的内容制作片段来显示不同的内容吗?

例如:我用 ImageView 和 TextView 创建 Fragment。在 MainActivity 我单击 Button1 并打开 Fragment 并显示一些内容,如果我单击 Button2 相同的 Fragment 打开但显示不同的内容。可以这样做吗?

【问题讨论】:

  • 你只需要通过 bundle (参数)传递一个标志,片段决定下一步做什么。
  • 您能否更清楚地解释一下或为我链接文档?
  • 我添加一个答案以获得更多细节
  • 如果您使用 2 个不同的片段以获得更好的代码可读性会更好。否则 flag 将完成工作。根据标志,您可以在片段中膨胀不同的布局
  • 我是一个完全的新手。你能更详细地解释一下如何做到这一点吗?

标签: java android android-studio android-fragments


【解决方案1】:

案例1:如果片段实例没有被保留/重用(例如片段对话框),我们只需要在创建片段时通过参数绑定标志/内容

fun createAFragment(flag: Int): Fragment {
    val fragment = AFragment()
    fragment.arguments = Bundle().apply { putString("keyFlag", flag) }
    return fragment
}

在 AFragment 的 onViewCreated() 中,我们可以从 arguments 包中读取标志值,并将等效数据绑定到图像视图和文本视图中。 我们也可以通过arguments将图片资源和文本绑定到fragment(见Bundle)

我们也可以将这种方法应用于ViewPager 上的片段。

情况2:fragment实例被保留,例如一个activity上有两个fragment,1控制另一个。 在这种情况下,我们应该使用view model在Fragment和Activity之间共享数据,live data用于通知数据变化。

此代码实验室可能有助于了解 ViewModel 和 LiveData:https://developer.android.com/codelabs/kotlin-android-training-live-data

【讨论】:

    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多