Search code examples
androidtoast

How to display toast inside timer?


I want to display toast message inside timer and I used the following code :

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

public void fun1()
{
    //want to display toast
}

And I am getting following error:

WARN/System.err(593): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

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

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

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

Thanks.


Solution

  • You can't make UI updates inside separate Thread, like Timer. You should use Handler object for UI update:

    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);