从第二个Dialog Fragment获取数据回到Fragment

时间:2017-10-16 16:53:29

标签: android android-fragments

方案 我得到多个片段,它们将调用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也没有成功......

1 个答案:

答案 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 
    }
}

因此您在打开对话框之前保存对当前片段的引用。