如何在计时器内显示吐司?

Mon*_*ali 7 android toast

我想在计时器中显示toast消息,我使用了以下代码:

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

public void fun1()
{
    //want to display toast
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

WARN/System.err(593):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序

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

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

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

谢谢.

Ols*_*age 7

您不能在单独的Thread内部进行UI更新,例如Timer.您应该使用Handler对象进行UI更新:

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);
Run Code Online (Sandbox Code Playgroud)