0

吐司在课堂上不起作用,

这是我的代码:

public class ToastClass {

public ToastClass (Context activity){   
        callToast(activity);
    }   
    public void callToast(Context activity){
            Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
    }   
}

错误我得到这个,

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

我需要在课堂上做有什么办法吗?

谢谢。

4

3 回答 3

6

问题是您必须Toast在主线程上制作+显示您的 s 。不允许Toast.makeText(...)在任何其他线程内。

如果您只想延迟您的 Toast,请使用Handler,否则您可以使用任何View实例到postDelay(Runnable, long)您的 Toast。

在您的情况下,您有一个Activity实例,因此您可以调用它的runOnUiThread(Runnable)方法。

activity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
       Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
    }
});
于 2013-02-23T11:43:35.670 回答
2

尝试:

activity.runOnUiThread(
 new Runnable(){
  @Override
  public void run(){
   Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
  }
);
于 2013-02-23T11:45:20.193 回答
1

采用

ClassName.this而不是活动

于 2013-02-23T12:14:29.593 回答