¿Cómo se muestra un brindis desde un hilo en segundo plano en Android?
¿ Cómo puedo mostrar mensajes Toast desde un hilo?
Aceptado
Puedes hacerlo llamando a un Activity
método runOnUiThread
desde tu hilo:
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
}
});
Me gusta tener un método en mi actividad llamado showToast
al que puedo llamar desde cualquier lugar...
public void showToast(final String toast)
{
runOnUiThread(() -> Toast.makeText(MyActivity.this, toast, Toast.LENGTH_SHORT).show());
}
Luego lo llamo con más frecuencia desde dentro MyActivity
en cualquier hilo como este...
showToast(getString(R.string.MyMessage));
Esto es similar a otras respuestas, sin embargo, actualizado para nuevas API disponibles y mucho más limpio. Además, no supone que esté en un contexto de actividad.
public class MyService extends AnyContextSubclass {
public void postToastMessage(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
}
});
}
}