Android示例中的上下文问题“Google Map View”

时间:2010-02-12 22:06:41

标签: android google-maps

我已尝试在Android开发者网站上实施Google Map View教程,但在点击叠加图片时尝试显示AlertDialog时遇到问题。问题是调用

时mContext为null
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);

在HelloItemizedOverlay的onTap方法中因为构造函数

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
}
永远不会调用(我可以告诉)

初始化mContext。当我更换

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, 
                this.getApplicationContext());

在HelloGoogleMaps的onCreate方法中为了初始化上下文,我得到了一个异常

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序

当我尝试像这样显示AlertDialog时:

dialog.show();

我认为这个教程已经被成千上万的人成功实现,所以我很遗憾为什么没有其他人遇到这个问题...我是否错过了教程中的重要一步?

2 个答案:

答案 0 :(得分:11)

我认为您需要将mapView的上下文传递给HelloItemizedOverlay构造函数,如下所示:

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView.getContext());

教程的代码示例中显然存在错误。像这样的小错误和遗漏在参考文档中并不罕见,特别是对于像Android这样的大型项目。

答案 1 :(得分:1)

在构造函数中,似乎应该是:

super(boundCenterBottom(defaultMarker));

super(defaultMarker);