¿Por qué Fragmento no retiene el estado cuando se gira la pantalla?

He tenido algunos problemas para obtener algunas subclases de DialogPreference personalizadas dentro de un PreferenceFragment para que permanezcan visibles cuando se gira la pantalla. No experimento este problema cuando uso una actividad de preferencia, por lo que no sé si es un error de Android o un problema con mi código, pero me gustaría que alguien confirme si está teniendo la misma experiencia.

Para probar esto, primero cree una pantalla de preferencias que contenga al menos un DialogPreference (no importa qué subclase). Luego mostrarlo en una actividad de preferencia. Cuando ejecute su aplicación, presione en DialogPreference para que se muestre el diálogo. Luego gire la pantalla para que cambie la orientación. ¿El diálogo sigue siendo visible?

Luego intente lo mismo, pero con un PreferenceFragment para mostrar sus preferencias en lugar de un PreferenceActivity. De nuevo, ¿el diálogo permanece visible cuando gira la pantalla?

Hasta ahora, he encontrado que el diálogo permanecerá visible si se utiliza una actividad de preferencia, pero no si se utiliza un elemento de preferencia. Mirando a laCódigo fuente para DialogPreferenceParece que el comportamiento correcto es que el diálogo permanezca visible, porqueisDialogShowing es la información del estado que se guarda cuandoonSaveInstanceState() Se llama en la reorientación de la pantalla. Por lo tanto, creo que un error puede estar impidiendo que el PreferenceFragment (y todo lo que contiene) restaure esa información de estado.

Si se trata de un error de Android, tiene implicaciones de gran alcance, ya que cualquier persona que use PreferenceFragment no puede guardar ni restaurar la información de estado.

¿Alguien por favor puede confirmar? Si no es un error, ¿qué está pasando?

Respuestas a la pregunta(2)

Su respuesta a la pregunta