方案 我得到多个片段,它们将调用DialogFragment#1,它进一步得到3个按钮,每个按钮打开另一个DialogFragment#2。
我想要的是获取用户通过DialogFragment#2选择的String值并将其发送回callingFragment(可以是6中的任何一个)来设置textView Text。
我可以通过为每个6个片段保留不同的DialogFragment类来实现这一点,但我想为DialogFragment#1保留1个类,为DialogFragment#2保留1个,并且对每个片段使用is,因为所有的功能都相同... < / p>
可能的解决方案我尝试但没有成功 1 - 尝试获取调用片段名称,但当我尝试调用公共片段片段时,它无法正常工作 callingFragment.setText(文本) callingFragment应该是任何6个片段中的1个......
2 - OnActivityResult也没有成功......
答案 0 :(得分:0)
实际上这可以通过以下方式实现:
class MainActivity : AppCompatActivity(){
private lateinit var currentFragment: CurrentFragment?
private val host by lazy {
supportFragmentManager.findFragmentById(R.id.main_nav_fragment) as NavHostFragment
}
override fun showQuantityDialog() {
currentFragment= host.childFragmentManager.primaryNavigationFragment as CurrentFragment
navController.navigate(ViewProductFragmentDirections.actionViewProductFragmentToQuantityDialogFragment())
}
// This is a callback from your dialog
override fun setQuantity(quantity: Int) {
viewProductFragment?. ... set what ever you want
viewProductFragment = null
}
}
因此您在打开对话框之前保存对当前片段的引用。