Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
402 views
in Technique[技术] by (71.8m points)

android - 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...