我知道,这又是一个重复的问题,但我的情况是不同的问题.
我有一个带有静态函数和处理程序的类abc.之前我无法从静态函数调用处理程序.然后我用静态函数搜索Access非静态函数,发现一个解决方案是创建一个类和访问非静态变量的实例.但现在,为什么,我得到这个错误.
E/AndroidRuntime(13343): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
public class abc
{
static public void Instantiate()
{
abc xyz = new abc();
xyz.handler.sendEmptyMessage(1); **//GETTING ERROR IN THIS LINE**
}
public Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:如何从静态函数向处理程序发送消息?
Thankx.
检查你这样做的地方:
abc.Instantiate();
Run Code Online (Sandbox Code Playgroud)
并替换它
runOnUiThread(new Runnable() {
@Override
public void run() {
abc.Instantiate();
}
});
Run Code Online (Sandbox Code Playgroud)
我希望你从一个活动中调用它
一些解释(引用 bicska88):)
导致问题的原因与您Handler从静态函数中向对象发送消息的事实无关.问题是您从未调用的线程向处理程序发送消息Looper.prepare()(如错误消息所示,该线程没有message loop).这可以通过显式调用Looper.prepare()before-while或通过在UIThread上运行代码来解决.
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |