我想在计时器中显示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)
谢谢.
您不能在单独的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)
| 归档时间: |
|
| 查看次数: |
13531 次 |
| 最近记录: |