当我们对片段使用依赖注入时,将数据从片段发送到另一个片段

Send data from fragment to another when we use dependency injection for fragments

有没有一种方法可以将数据从 fragment 发送到另一个而无需从中创建新的 instance

inject 我的 fragment 但是我遇到了一个问题,我在下面描述了它:

我们 inject 我们的 fragments 是这样的:

val fragmentModule= module {

    factory { MyFragment() }
}

这是一个 function 用于替换 fragment :

fun AppCompatActivity.replaceFragment(fragment: Class<out Fragment>,frameId: Int){

    supportFragmentManager
        .beginTransaction()
        .replace(frameId,fragment,null,null)
        .commit()
}

然后我这样使用它:

activity.replaceFragment(MyFragment::class.java,R.id.frameLayoutId)

所以我的问题是如何以这种方式将 argument 设置为 fragment 而无需创建 fragment 的新 instance 我们如何才能传递一个数据 ?

    val bundle=Bundle()
    bundle.putString("YourKey","YourData")
    val fragment=MyFragment()
    fragment.arguments=bundle

without create new instance? 没有。依赖注入框架只负责在需要的地方提供依赖,它不会以任何方式自动连接组件。

使用 Koin,您可以在使用 FragmentFactory.

创建片段期间传递 Bundle
val arguments = Bundle().apply { 
putString("key", "value")
}
supportFragmentManager.beginTransaction()
.replace(R.id.container, MyFragment::class.java, arguments)
.commit()

要在片段创建后传递数据,您已经以某种方式在 Fragment 中进行了设置。可以有以下选项:-

  1. 如果您使用 MVVM,您可以使用共享 ViewModel 来使用 LiveData 传递数据。
  2. 或者,您可以从后台堆栈中获取 Fragment 并对其调用方法。
  3. 或者你可以使用回调接口