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

Android 当我们对片段使用依赖项注入时,将数据从片段发送到另一个片段,android,kotlin,fragment,bundle,koin,Android,Kotlin,Fragment,Bundle,Koin,有没有一种方法可以将数据从片段发送到另一个片段,而无需从该片段创建新的实例 val bundle=Bundle() bundle.putString("YourKey","YourData") val fragment=MyFragment() fragment.arguments=bundle Iinjectmyfragment但是我遇到了一个问题,我在下面描述它: val fragmentModule= module

有没有一种方法可以将数据从
片段
发送到另一个片段,而无需从该片段创建新的
实例

    val bundle=Bundle()
    bundle.putString("YourKey","YourData")
    val fragment=MyFragment()
    fragment.arguments=bundle
I
inject
my
fragment
但是我遇到了一个问题,我在下面描述它:

val fragmentModule= module {

    factory { MyFragment() }
}
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)
我们
像这样注入
我们的
片段:

val fragmentModule= module {

    factory { MyFragment() }
}
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)
这是替换
片段的
函数:

val fragmentModule= module {

    factory { MyFragment() }
}
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)
因此,我的问题是如何以这种方式将
参数设置为
片段
,而不创建
片段
的新
实例
,如何传递数据?

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

不创建新实例?
否。依赖项注入框架只负责在需要时提供依赖项,它不会以任何方式自动连接组件

使用
Koin
可以在使用
FragmentFactory
创建片段的过程中传递
Bundle

val arguments = Bundle().apply { 
putString("key", "value")
}
supportFragmentManager.beginTransaction()
.replace(R.id.container, MyFragment::class.java, arguments)
.commit()
要在创建片段后传递数据,请在
fragment
中进行设置。可以有以下选项:-

  • 如果您使用的是
    MVVM
    ,则可以使用共享的
    ViewModel
    使用
    LiveData
    传递数据
  • 或者,您可以从后堆栈中获取
    片段
    ,并对其调用一个方法
  • 也可以使用回调接口
  • 我现在发现了这个,不管怎样,谢谢你的回答,关于这个
    没有创建新实例?
    我的意思是直接的。