Grrr ...de error hace referencia a una clase interna Vista en diseño/main.xml
creo una subclase de vista como una clase interna en mi actividad. Antes de simplemente vincular a esta vista de mi actividad con:
setContentView(new CustomView(this));
sin problemas.
Ahora, sin embargo, mi vista se está volviendo más compleja, por lo que la hago parte de un FrameLayout para poder hacer de esta la vista base y agregar un widget Spinner encima. El problema es que cuando hago esto me da un error:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grafightscratch.ochemmer/com.grafightscratch.ochemmer.MoleculeTablet}: android.view.InflateException: Binary XML file line #4: Error inflating class com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
...
Caused by: android.view.InflateException: Binary XML file line #4: Error inflating class com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
...
Caused by: java.lang.ClassNotFoundException: com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView in loader [email protected]
So- este punto de vista trabajaba antes, cuando he vinculado a ella directamente, pero cuando traté de añadir en el archivo main.xml como parte de una framelayout Obtuve el error anterior. También intenté poner en un diseño con solo que se muestra a través de:
<com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/molecule_tablet_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Nada funciona. Sigo recibiendo los errores InflateException/ClassNotFoundException. Se queja de la "línea n. ° 3" en el archivo XML binario, y si está hablando de main.xml, es la declaración del paquete que he comprobado tres veces.
EDIT Intenté hacer de esta vista una clase separada (es decir, no una clase interna) y funciona. Después de buscar en torno he encontrado algunos mensajes diciendo que la etiqueta XML debe tener este aspecto:
<com.grafightscratch.ochemmer.MoleculeTablet$MoleculeTabletView ...>
Es decir, un signo de dólar se debe utilizar para separar el innerclass de la clase principal. Sin embargo, Eclipse detecta esto, lo llama un error y se niega a permitirme compilar o implementar con ese personaje allí. Entonces, ahora la pregunta es: ¿cómo se hace referencia a una Vista que es una clase interna?
Solo una nota aquí, la etiqueta xml puede necesitar estar "más cerca" de su clase que la etiqueta 'Ver' (en mi caso necesitaba un' ViewGroup') –
Aunque no obtengo un error, cuando obtengo la vista (usando findViewById), obtengo una instancia de 'android.view.View', no una instancia de la clase interna. ¿Lo que da? – yoaquim
Asegúrese de que la etiqueta de vista xml esté en minúsculas, entonces debería poder convertirla a la clase que especificó – wkarl