我已尝试在Android开发者网站上实施Google Map View教程,但在点击叠加图片时尝试显示AlertDialog时遇到问题。问题是调用
时mContext为nullAlertDialog.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();
我认为这个教程已经被成千上万的人成功实现,所以我很遗憾为什么没有其他人遇到这个问题...我是否错过了教程中的重要一步?
答案 0 :(得分:11)
我认为您需要将mapView的上下文传递给HelloItemizedOverlay构造函数,如下所示:
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView.getContext());
教程的代码示例中显然存在错误。像这样的小错误和遗漏在参考文档中并不罕见,特别是对于像Android这样的大型项目。
答案 1 :(得分:1)
在构造函数中,似乎应该是:
super(boundCenterBottom(defaultMarker));
不
super(defaultMarker);