【问题标题】:Can't create handler inside thread that has not called Looper [duplicate]无法在未调用 Looper 的线程内创建处理程序 [重复]
【发布时间】:2013-08-30 09:46:52
【问题描述】:

我收到以下错误:

08-27 17:49:17.995: E/AndroidRuntime(10085): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-27 17:49:17.995: E/AndroidRuntime(10085):    at android.os.Handler.<init>(Handler.java:121)
08-27 17:49:17.995: E/AndroidRuntime(10085):    at android.widget.Toast$TN.<init>(Toast.java:361)
08-27 17:49:17.995: E/AndroidRuntime(10085):    at android.widget.Toast.<init>(Toast.java:97)
08-27 17:49:17.995: E/AndroidRuntime(10085):    at android.widget.Toast.makeText(Toast.java:254)

运行第一行时:

public static void alertUser(String str) {
    Toast toast = Toast.makeText(mInstance.getApplicationContext(), str,
            Toast.LENGTH_LONG);
    toast.show();

}

我该如何解决这个问题?

【问题讨论】:

  • 好像你正在从一个线程更新用户界面

标签: java android toast


【解决方案1】:

这样的事情应该可以工作:

public static void alertUser(String str) {

runOnUiThread(setErrorMessage); 

}


private Runnable setErrorMessage = new Runnable() {
    @Override
    public void run() {

        Toast toast = Toast.makeText(mInstance.getApplicationContext(), str,
        Toast.LENGTH_LONG);
toast.show();
    }
};

【讨论】:

猜你喜欢
  • 2016-10-31
  • 1970-01-01
  • 2012-11-27
  • 2012-10-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2011-09-06
相关资源
最近更新 更多