Основной ответ:
Они полезны только при реализации onSaveInstanceState () и восстановлении этого состояния в onCreate (). Если вы не реализуете onSaveInstanceState (), вы можете забыть об этих методах и притвориться, будто они не существуют.
Проблема, которую они решают: если вы хотите сохранить ссылку на фрагмент в вашем «состоянии сохраненного экземпляра», вы не можете просто поместить туда ссылку на объект. Во-первых, потому что вы не можете поместить простой объект в комплект. :) И причина этого заключается в том, что смысл этого сохраненного состояния заключается в том, что оно должно быть скопировано из вашего процесса, поэтому, если ваш процесс необходимо уничтожить, его можно позже скопировать обратно в новый процесс, чтобы вы могли -инициализировать вашу деятельность / фрагмент из. Необработанный объект имеет смысл только в контексте процесса, в котором он выполняется, поэтому невозможно правильно скопировать ссылку на такой объект из вашего текущего процесса и в другой.
Итак, что делает putFragment () / getFragment (), это помещает фрагмент данных в данный комплект, который может идентифицировать этот фрагмент в новом экземпляре вашей деятельности / фрагмента в другом процессе. То, чем является это представление, не определено, но в текущей реализации это внутренний целочисленный идентификатор для этого фрагмента, который будет использоваться позже, когда FragmentManager потребуется заново создать этот фрагмент из ранее сохраненного состояния ... воссоздан с тем же идентификатором, поэтому, когда вы затем вызываете getFragment (), он может извлечь целое число и использовать его для определения правильного объекта Fragment, чтобы вернуться к вызывающему объекту, который соответствует тому, который был ранее сохранен.