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

tro*_*man 4 android google-maps

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

AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
Run Code Online (Sandbox Code Playgroud)

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

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
}
Run Code Online (Sandbox Code Playgroud)

从来没有调用(我可以告诉)初始化mContext.当我更换

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);
Run Code Online (Sandbox Code Playgroud)

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, 
                this.getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

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

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

当我尝试显示AlertDialog时:

dialog.show();
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*elt 11

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

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView.getContext());
Run Code Online (Sandbox Code Playgroud)

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