elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Ayuda]Timer en Android
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda]Timer en Android  (Leído 7,322 veces)
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #10 en: 13 Abril 2015, 16:30 pm »

La clase interna me quedo de esta forma:

Código
  1. class TimerTask2 extends java.util.TimerTask{
  2.        public void run() {
  3.            getActivity().runOnUiThread(new Runnable() {
  4.                @Override
  5.                public void run() {
  6.                    //Obtengo el valor y lo bajo 1, por ejemplo, si es 30 ahora sera 29
  7.                    int bajar1Segundo = Integer.parseInt(tv.getText().toString())-1;
  8.                    tv.setText(String.valueOf(bajar1Segundo)); //Cambio el valor del TextView
  9.                    if(bajar1Segundo == 0) {
  10.                        Toast.makeText(getApplicationContext(), "El tiempo se ha terminado", Toast.LENGTH_LONG);
  11.                    };
  12.                }
  13.            });
  14.        }
  15.    }


En línea

PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #11 en: 13 Abril 2015, 16:46 pm »

Gus eres grande, muchas gracias por toda la ayuda  ;D.

Puse el mismo código, pero sin poner el método getActivity() y funciona de maravilla la App, osea el code me quedo algo así:

Código
  1. public void run() {
  2.            runOnUiThread(new Runnable() {
  3.                @Override
  4.                public void run() {
  5.                    //Obtengo el valor y lo bajo 1, por ejemplo, si es 30 ahora sera 29
  6.                    int bajar1Segundo = Integer.parseInt(tv.getText().toString())-1;
  7.                    tv.setText(String.valueOf(bajar1Segundo)); //Cambio el valor del TextView
  8.                    if(bajar1Segundo == 0) {
  9.                        Toast.makeText(getApplicationContext(), "El tiempo se ha terminado", Toast.LENGTH_LONG);
  10.                    };
  11.                }
  12.            });
  13.        }

Saludos crack!!!


« Última modificación: 13 Abril 2015, 16:55 pm por PabloPbl » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #12 en: 13 Abril 2015, 17:48 pm »

getActivity(), te devuelve la actividad. También bastaría con Prueba.this. Intenta hacerlo con un callback en lugar de una clase:

Código
  1. public class Prueba extends ActionBarActivity {
  2.  
  3.    private TextView tv;
  4.    private Timer timer;
  5.    private TimerTask timerTask;
  6.  
  7.    @Override
  8.    protected void onCreate(Bundle savedInstanceState) {
  9.        super.onCreate(savedInstanceState);
  10.        setContentView(R.layout.activity_1);
  11.        tv = (TextView)findViewById(R.id.tvTemporizador);
  12.    }
  13.    public void startTimer() {
  14.        timer = new Timer();
  15.        initializeTimerTask();
  16.        timer.schedule(new TimerTask,1000, 1000);
  17.    }
  18.    private void initializeTimerTask() {
  19.        timerTask = new TimerTask() {
  20.            @Override
  21.            public void run() {
  22.                getActivity().runOnUiThread(new Runnable() {
  23.                @Override
  24.                public void run() {
  25.                    //Obtengo el valor y lo bajo 1, por ejemplo, si es 30 ahora sera 29
  26.                    int bajar1Segundo = Integer.parseInt(tv.getText().toString())-1;
  27.                    tv.setText(String.valueOf(bajar1Segundo)); //Cambio el valor del TextView
  28.                    if(bajar1Segundo == 0) {
  29.                        Toast.makeText(getApplicationContext(), "El tiempo se ha terminado", Toast.LENGTH_LONG);
  30.                    };
  31.                }
  32.            });
  33.    }
  34.    public void cancelTimer() {
  35.        if (timer != null) {
  36.            timer.cancel();
  37.            timer = null;
  38.        }
  39.    }
  40. }


Saludos.


PD: Ya vi que lo solucionaste xD.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #13 en: 13 Abril 2015, 19:09 pm »

Call back? nunca había oído de eso. He mirado el código que me haz pasado y hay cosas que nunca había visto, por lo que veo cuando tu haces:
Código
  1. timer.schedule(new TimerTask,1000, 1000);
Como primer parámetro le estas pasando un nuevo objeto, pero como se yo que se va a ejecutar este código:
Código
  1. private void initializeTimerTask() {
  2.        timerTask = new TimerTask() {
  3.            @Override
  4.            public void run() {
  5.                getActivity().runOnUiThread(new Runnable() {
  6.                @Override
  7.                public void run() {
  8.                    //Obtengo el valor y lo bajo 1, por ejemplo, si es 30 ahora sera 29
  9.                    int bajar1Segundo = Integer.parseInt(tv.getText().toString())-1;
  10.                    tv.setText(String.valueOf(bajar1Segundo)); //Cambio el valor del TextView
  11.                    if(bajar1Segundo == 0) {
  12.                        Toast.makeText(getApplicationContext(), "El tiempo se ha terminado", Toast.LENGTH_LONG);
  13.                    };
  14.                }
  15.            });
  16.    }
  17.  

Jajaja xDDD, justo me acabo de dar cuenta de algo, capaz que lo que haz querido hacer, es esto:
Código
  1. timer.schedule(timerTask,1000, 1000);
En vez de pasarle un nuevo objeto, le pasamos el que creamos anteriormente.

Creo que es mas fácil hacerlo así no?

PD: Acabo de leer el principio de este mensaje y me mato xDDD
« Última modificación: 13 Abril 2015, 19:13 pm por PabloPbl » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #14 en: 13 Abril 2015, 19:49 pm »

Sí, debes pasarle el objeto que está como propiedad y que se ha inicializado en el método initializeTimerTask(), lo que pasa es que en la edición olvidé cambiar eso xD.


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: [Ayuda]Timer en Android
« Respuesta #15 en: 13 Abril 2015, 21:38 pm »

Ahora si tiene mas sentido jaja.

Gracias y un Saludo!!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con timer:P « 1 2 3 »
.NET (C#, VB.NET, ASP)
<sylar> 20 10,912 Último mensaje 23 Mayo 2009, 03:51 am
por <sylar>
Ayuda con Timer C#.. « 1 2 »
.NET (C#, VB.NET, ASP)
ronald hisp 13 23,736 Último mensaje 15 Julio 2009, 18:30 pm
por raul338
[Ayuda] Timer y.. « 1 2 3 »
Programación Visual Basic
jorgelin95 20 6,352 Último mensaje 17 Septiembre 2010, 00:55 am
por bizco
ayuda timer
Programación Visual Basic
asdexiva 3 2,132 Último mensaje 13 Marzo 2013, 00:01 am
por MCKSys Argentina
Ayuda timer en C#
.NET (C#, VB.NET, ASP)
KiddKeo 3 2,572 Último mensaje 1 Julio 2018, 14:48 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines