I create Fragment named HomeFragment.
And write code that show DialogFragment in Fragment(HomeFragment) below
private fun showCustomDialog() {
CustomDialog().apply {
arguments = Bundle().apply {
putString("title", requireContext().getString(R.string.app_name))
}
}.show(parentFragmentManager, "customDialog")
}
When I used requireContext()
to get title in Bundle().apply
, Exception occured like below
Fragment CustomDialog{1ef2304} (4ca006b2-19b7-4550-a227-e5c6d1d43e02) not attached to a context.
On the other hand, Exception not occured when I used this@HomeFragment
instead of using requireContext()
private fun showCustomDialog() {
CustomDialog().apply {
arguments = Bundle().apply {
// Exception not occured
putString("title", [email protected](R.string.app_name))
}
}.show(parentFragmentManager, "customDialog")
}
using requireContext()
is that context is null, Why?
CodePudding user response:
Because your CustomDialog
is a Fragment
and requireContext()
resolves to your CustomDialog
instead of the containing HomeFragment
due to the apply
scope function. After instantiating the dialog fragment it is not yet attached to any context, so requireContext()
will throw.