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

Respuesta
 
Herramientas
  #1  
Viejo 19/01/14, 20:06:48
Array

[xs_avatar]
Jetemias Jetemias no está en línea
Usuario poco activo
 
Fecha de registro: ene 2014
Mensajes: 14
Tu operador: Movistar

guiño Finalizar Activity

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);
Para mostrar una clase java:
Código:
setContentView(new ClaseJava());
Cuando ejecuto otra actividad con un Intent, la actividad anterior se queda en la pila de actividades abiertas a no ser que la finalize.
Código:
Intent intent = new Intent(this, Activity.class);
Mi problema es el siguiente, no se como terminar la actividad abierta/mostrada por la clase java, es decir, si hago un Intent para abrir otra actividad desde esta clase, al cerrar la nueva esta sigue apareciendo.

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.
Responder Con Cita


  #2  
Viejo 19/01/14, 20:48:17
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 19/01/14, 20:59:40
Array

[xs_avatar]
Jetemias Jetemias no está en línea
Usuario poco activo
 
Fecha de registro: ene 2014
Mensajes: 14
Tu operador: Movistar

guiño

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
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
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:06:04 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /