Si tuviera mi DialogFragment
declarada como una clase interna Tengo una InstantiationException
en orientation change
, es decir, cuando se recrea ejemplo, que dice que no hay constructor público, la clase no es público, etc. De hecho todo lo que se public
, constructor por defecto esta en su lugar. Si muevo este DialogFragment
a un archivo separado, todo va bien. No estoy buscando una solución, solo quiero entender por qué está sucediendo esto.¿Por qué DialogFragment no puede ser una clase interna?
10
A
Respuesta
8
Esto parece ser una restricción en Java según cómo se crean y vuelven a crear Fragments
.
Parece que todos Fragment
s tienen que ser reinstantiated en ciertas situaciones [1], como los cambios de orientación (y me imagino en la inicialización, dependiendo de cómo se crea la Fragment
). Esto significa que será reintegrado desde fuera de su clase externa. Sin embargo, una clase interna no static
no se puede instanciar desde fuera de la clase externa. [2] También hay otros casos en los que un Fragment
necesitaría ser comunicado desde fuera de la clase. [3]
Cuestiones relacionadas
- 1. ¿Por qué mi clase pública no puede extender una clase interna?
- 2. ¿Puede una clase interna de una clase de plantilla ser una clase sin plantilla?
- 3. ¿Por qué una clase interna serializable no es serializable?
- 4. ¿por qué __getitem__ no puede ser classmethod?
- 5. ¿Por qué una clase interna no estática no puede tener miembros estáticos (campos y métodos)?
- 6. ¿Por qué usar DialogFragment?
- 7. ¿Por qué una estructura no administrada no puede ser miembro de una clase administrada?
- 8. ¿Por qué una enum de Java no puede ser definitiva?
- 9. ¿Por qué una estructura C# no puede ser heredada?
- 10. ¿Por qué no se puede capturar la excepción interna?
- 11. ¿Por qué NSWindow sin styleMask: NSTitledWindowMask no puede ser keyWindow?
- 12. ¿Por qué una clase de nivel superior no puede ser estática en Java?
- 13. Por qué AccessViolationException no puede ser capturado por .NET4.0
- 14. ¿Puede una clase @Embeddable ser privada?
- 15. ¿Por qué los campos de clase no pueden ser var?
- 16. ¿Por qué es imposible en java referir una variable no final en una clase anónima interna?
- 17. En Java, ¿por qué una matriz no puede ser una variable de tipo vinculada, pero puede ser un comodín vinculado?
- 18. Instantiating una clase interna
- 19. ¿Por qué no TextBox.Text en WPF puede ser animado?
- 20. ¿Por qué la clase de entidad en JPA no puede ser definitiva?
- 21. ¿Una referencia no puede ser NULL o puede ser NULL?
- 22. probando una clase interna
- 23. ¿Por qué puedo probar un genérico para nulo cuando puede no ser anulable o puede no ser un objeto?
- 24. No se puede acceder a la clase interna en bean
- 25. ¿Propósito de una clase interna?
- 26. BroadcastReceiver como clase interna
- 27. Método La clase interna local solo puede acceder a la variable local final.¿Por qué?
- 28. No sé por qué mi clase no se puede serializar
- 29. clase Anotar con clase interna
- 30. ¿Por qué la clase interna puede anular el método final privado?
No estoy del todo seguro, pero creo que 'DialogFragment's, si pertenece a una clase, tiene que ser' static'. Lamentablemente, no tengo ninguna cita para esto, solo que cada ejemplo de trabajo que he visto utiliza la implementación 'estática'. Desde la esencia de su publicación de ayer, entiendo que esta no es una solución factible, pero creo que este es el caso. Tal vez alguien más pueda arrojar más luz sobre esto ... – Eric
Gracias, Eric. Solo quiero entender lo que sucede detrás de escena, por qué sucede esto. – Eugene
Sí, tengo exactamente el mismo problema con la clase ViewPager y Fragment. – WELLCZECH