I\'m using navigation in MainActivity, then I start SecondActivity (for result). After finish of SecondActivity I would like to continue w         
        
call super.onPostResume() before navigation....It's working
You must always call super.onActivityResult() in your Activity's onActivityResult. That is what:
Unlocks Fragments so they can do fragment transactions (i.e., avoid the state is already saved errors)
Dispatches onActivityResult callbacks to Fragments that called startActivityForResult.
Finally, I fix the issue by simple calling super.onPostResume() right before navigating to restore state.
I believe above solutions should work. But my problem was different. There was a third party sdk which was launching its activity using context provided by me and it was delivering the result on a listener which I had to implement.
So there was no option for me to work with onActivityResult :(
I used below hack to solve the issue:
   private var runnable: Runnable? = null // Runnable object to contain the navigation code
    override fun onResume() {
        super.onResume()
        // run any task waiting for this fragment to be resumed
        runnable?.run()
    }
    override fun responseListener(response: Response) {    // Function in which you are getting response
        if (!isResumed) {    
            // add navigation to runnable as fragment is not resumed
            runnable = Runnable {
                navController.navigate(R.id.destination_to_navigate)
            }
        } else {
            // navigate normally as fragment is already resumed
            navController.navigate(R.id.destination_to_navigate)
        }
    }
Let me know if there is any better solution for this. Currently I found this very simple and easy to implement :)
I've solved this problem this way:
    @Override
public void onActivityResult() { //inside my fragment that started activity for result
        model.navigateToResults = true; //set flag, that navigation should be performed
}
and then
    @Override
public void onResume() { //inside fragment that started activity for result
    super.onResume();
    if(model.navigateToResults){
        model.navigateToResults = false;
        navController.navigate(R.id.action_startFragment_to_resultsFragment);
    }
}
not sure, if this is not a terrible hack, but it worked for me. FramgentManager state is restored at this point (onResume) and no problems with navigation occur.