|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
![]()
Buenas tardes,
He empezado hace poco con android y desde hace tiempo tengo un problema que no consigo solventar. Les pongo un poco en contexto: Al ejecutar una actividad, hay dos formas de "mostrar" la actividad por pantalla (desconozco si hay más de dos), la primera es mostrando un layout y la segunda es mostrando una clase java que no hereda de Activity. Les dejo un ejemplo para cada caso con lo que quiero decir: Para mostrar un layout: Código:
setContentView(R.layout.activity_Layout); Código:
setContentView(new ClaseJava()); Código:
Intent intent = new Intent(this, Activity.class); Muchas gracias de antemano. Un saludo PD: no me vengan con que se ha de utilizar el método finalize();, ese solo funciona para clases java que hereden de Activity y la mía no hereda de este. PD2: tampoco me digan del método onDestroy();, como mi clase no hereda de Activity no puedo sobrescribir dicho método. PD3: desconozco si hay alguna Interfaz que me permita sobrescribir los métodos mencionados anteriormente. Última edición por Jetemias Día 19/01/14 a las 21:00:32. Razón: La consulta ha sido solucionada. |
|
#2
|
||||
|
||||
Algo debe estar mal en el código que has puesto, efectivamente cuando usas el setContentView puedes pasar un Layout o una clase, pero esa clase tiene que heredar de "View". Lo que significa que al construirla debes COMO MÍNIMO, pasarle un Context por parámetro.
Es decir, el código debería ser tal que así: setContentView(new ClaseJava(this)); Porque Activity es un Context. A partir de aquí, si quieres finalizar la Activity desde ClaseJava, nada más fácil: ((Activity)getContext()).finish(); Realmente, y según los sitios donde uses ClaseJava, para ahorrarte algún que otro ClassCastException deberías hacer esto: if (getContext() instanceof Activity) ((Activity)getContext()).finish(); Última edición por kriogeN Día 19/01/14 a las 20:52:47. |
Gracias de parte de: | ||
#3
|
||||
|
||||
![]() Algo debe estar mal en el código que has puesto, efectivamente cuando usas el setContentView puedes pasar un Layout o una clase, pero esa clase tiene que heredar de "View". Lo que significa que al construirla debes COMO MÍNIMO, pasarle un Context por parámetro.
Es decir, el código debería ser tal que así: setContentView(new ClaseJava(this)); Porque Activity es un Context. A partir de aquí, si quieres finalizar la Activity desde ClaseJava, nada más fácil: ((Activity)getContext()).finish(); Realmente, y según los sitios donde uses ClaseJava, para ahorrarte algún que otro ClassCastException deberías hacer esto: if (getContext() instanceof Activity) ((Activity)getContext()).finish(); ![]() Muchas gracias, tu solución me ha servido. Efectivamente, a mi ClaseJava tengo que pasarle el context, se me olvido ese detalle en el código. Un saludo |
![]() |
![]() |
||||||
|
Herramientas | |