Home Menu

Menu



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  
Viejo 19/01/14, 20:06:48
Avatar de Jetemias
Jetemias Jetemias no está en línea
Usuario poco activo
Mensajes: 14
 
Fecha de registro: ene 2014
Mensajes: 14
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de Jetemias
Jetemias Jetemias no está en línea
Usuario poco activo
Mensajes: 14
 
Fecha de registro: ene 2014
Mensajes: 14
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 02:34:01 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007