¿Cómo mostrar tostadas dentro del temporizador?

Quiero mostrar el mensaje de pan tostado dentro del temporizador y utilicé el siguiente código:

timer.scheduleAtFixedRate( new TimerTask() { public void run() { try { fun1(); } catch (Exception e) {e.printStackTrace(); } } }, 0,60000); public void fun1() { //want to display toast } 

Y estoy recibiendo error de seguimiento:

WARN / System.err (593): java.lang.RuntimeException: No se puede crear el controlador dentro de subproceso que no ha llamado Looper.prepare ()

WARN / System.err (593): en android.os.Handler. (Handler.java:121)

WARN / System.err (593): en android.widget.Toast. (Toast.java:68)

WARN / System.err (593): en android.widget.Toast.makeText (Toast.java:231)

Gracias.

No puede realizar actualizaciones de interfaz de usuario dentro de Thread separado, como Timer. Debe utilizar el objeto Handler para la actualización de la interfaz de usuario:

 timer.scheduleAtFixedRate( new TimerTask() { private Handler updateUI = new Handler(){ @Override public void dispatchMessage(Message msg) { super.dispatchMessage(msg); fun1(); } }; public void run() { try { updateUI.sendEmptyMessage(0); } catch (Exception e) {e.printStackTrace(); } } }, 0,60000); 

La forma más fácil (IMO) es:

 new Timer().scheduleAtFixedRate(new TimerTask() { @Override public void run() { final String message = "Hi"; MyActivity.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MyActivity.this, message, Toast.LENGTH_SHORT).show(); } }); } }); 

La clave es MyActivity.this.runOnUiThread (Runnable).

Tienes que llamar a UIThread para mostrar Toast. No desde el hilo del temporizador.

Else llama a subproceso de interfaz de usuario de ese subproceso de temporizador.

Este enlace le ayudará,

http://developer.android.com/resources/articles/timed-ui-updates.html

y esto

http://developer.android.com/guide/appendix/faq/commontasks.html#threading

Gracias.

Crear un Handler y mostrar tostadas en este

 private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { // Toast here } }; 

Necesita tener acceso al Contexto de la aplicación para poder hacerlo. Trate de crear su propia clase que toma el contexto como parámetro de entrada:

 private class MyTimerTask extends TimerTask { private Context context; public MyTimerTask(Context context) { this.context = context; } @Override public void run() { Toast.makeText(context, "Toast text", Toast.LENGTH_SHORT).show(); } } 

Luego en su temporizador:

 timer.scheduleAtFixedRate( new MyTimerTask(this), 0,60000); 

Quería hacer un proyecto sencillo que pudiera mostrar un brindis en un temporizador. El temporizador se iniciará utilizando un servicio. A continuación, el temporizador se inicia cuando se inicia el servicio y se detiene cuando se detiene el servicio.

Clase 1

 package com.example.connect; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { Button button1,button2; private Handler mHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button)findViewById(R.id.button1); button2=(Button)findViewById(R.id.button2); } public void Start(View v) { startService(new Intent(MainActivity.this , Connect_service.class)); } public void Stop(View v) { stopService(new Intent(MainActivity.this , Connect_service.class)); } } 

Clase 2

 package com.example.connect; import java.util.Timer; import java.util.TimerTask; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class Connect_service extends Service{ Timer timer = new Timer(); TimerTask updateProfile = new CustomTimerTask(Connect_service.this); public void onCreate() { super.onCreate(); Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); timer.scheduleAtFixedRate(updateProfile, 0, 5000); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Toast.makeText(this, "Service Stopped", Toast.LENGTH_SHORT).show(); timer.cancel(); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } } 

Clase 3

 package com.example.connect; import java.util.TimerTask; import android.content.Context; import android.os.Handler; import android.widget.Toast; public class CustomTimerTask extends TimerTask { private Context context; private Handler mHandler = new Handler(); public CustomTimerTask(Context con) { this.context = con; } @Override public void run() { new Thread(new Runnable() { public void run() { mHandler.post(new Runnable() { public void run() { Toast.makeText(context, "In Timer", Toast.LENGTH_SHORT).show(); } }); } }).start(); } } 

Estoy tratando de hacer mi propia tostada con mis propias opiniones.

He combinado con éxito sus enfoques. El código siguiente me permite mostrar brindis y cambiar / quitar vistas sin estrellarse, sólo cambia los parámetros del constructor de MyTimerTask a lo que usted necesita para trabajar.

 public void yourFunction(){ Timer timer = new Timer(); MyTimerTask mtc = new MyTimerTask(this.getContext(), tvNotice); timer.schedule(mtc, 1000); } private class MyTimerTask extends TimerTask { private TextView tv; private Context context; public MyTimerTask(Context pContext, TextView pTv) { this.tv = pTv; this.context = pContext; } @Override public void run() { updateUI.sendEmptyMessage(0); } private Handler updateUI = new Handler(){ @Override public void dispatchMessage(Message msg) { super.dispatchMessage(msg); tv.setText("TextView Message"); Toast.makeText(context, "Toast Message", 0).show(); } }; } 
  • Problema de brindis en android
  • Java.lang.RuntimeException: No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ();
  • ¿Puedo cancelar Toast anterior cuando quiero mostrar otro Toast?
  • ¿Por qué Toast.makeText y no Toast nuevo
  • Incompatibilidad de tipo: no se puede convertir void to toast
  • Error de Android Toast
  • Detección de mensajes de tostadas
  • Cómo evitar los solapamientos de tostadas múltiples
  • Cómo mostrar un mensaje Toast desde una clase que no se extiende Actividad
  • ¿Cuál es la duración de un brindis LENGTH_LONG y LENGTH_SHORT
  • Establecer Toast Aparecer Longitud
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.