为什么getHandler()返回null?

我有以下问题。 我正在像这样在单独的线程中在mapview上绘制路线:

public void drawRoute(final MapView mapView) { new Thread(new Runnable() { public void run() { try { //Do something useful } catch (SomeException se) { Handler handler = mapView.getHandler(); handler.post(/*show error in UI thread*/) }} }).start(); } 

但是,当我得到处理程序它返回空,虽然在debugging模式处理程序返回并显示错误消息。 问题是什么?

PS可能是得到处理程序的不正确的方式,但我找不到有关它的信息。

Solutions Collecting From Web of "为什么getHandler()返回null?"

getHandler方法返回null因为该视图没有附加:

 public Handler getHandler() { if (mAttachInfo != null) { return mAttachInfo.mHandler; } return null; } 

mAttachInfodispatchAttachedToWindow设置,在dispatchAttachedToWindow mAttachInfo

而不是mapView.getHandler().post()你可以直接使用mapView.post() (它似乎使用getHandler().post()ViewRootImpl.getRunQueue().post() )。