Android Navigation - Unable to get Saved State Handle from Dialog Destination

638 views Asked by At

I am trying to pass data from dialog destination to fragment. But it is not getting called If I try the same consecutively. For single try it works fine.

Below is my code that is in my dialog fragment:

val navBackStackEntry = findNavController().getBackStackEntry(R.id.fragment_name)

onClick of button I am doing this

navBackStackEntry.savedStateHandle.set(ConstantUtils.SAVED_DATE, "")
dismiss()

In fragment's onResume I am observing the data like below:

 val savedStateHandle = findNavController().currentBackStackEntry?.savedStateHandle
savedStateHandle?.getLiveData<String>(ConstantUtils.SAVED_DATE)?.observe(viewLifecycleOwner, 
Observer { date ->
               //Code goes here
                savedStateHandle.remove<String>(ConstantUtils.SAVED_DATE)
            })

When I click the button from dialog it comes to onResume of fragment, If I again go to the dialog and click on button it does not return to onResume of fragment.

Pleas let me know what mistake am I making here.

1

There are 1 answers

0
sajadab On

If you want to pass argument to fragment and receive one, you can use setFragmentResult() function can pass and receive bundle between fragments. This is source link for more study

https://developer.android.com/guide/fragments/communicate#fragment-result