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
Iinject
myfragment
但是我遇到了一个问题,我在下面描述它:
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
传递数据片段
,并对其调用一个方法没有创建新实例?
我的意思是直接的。