
我相信这与mContext的null值有关,但我不确定,如果有人可以帮我解决这个问题,我真的很感激:
protected boolean onTap(int index) {OverlayItem item = mOverlays.get(index);Context mContext = null;AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 我的地图类:
package testing.map;import java.util.@R_403_6818@;import com.Google.androID.maps.GeoPoint;import com.Google.androID.maps.MapActivity;import com.Google.androID.maps.MapVIEw;import com.Google.androID.maps.Overlay;import com.Google.androID.maps.OverlayItem;import androID.content.Context;import androID.graphics.drawable.Drawable;import androID.os.Bundle;public class MapvIEw extends MapActivity { /** Called when the activity is first created. */protected boolean isRoutedisplayed(){ return false;} @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.mapvIEw); MapVIEw mapVIEw = (MapVIEw) findVIEwByID(R.ID.mapvIEw); mapVIEw.setBuiltInZoomControls(true); @R_403_6818@<Overlay> mapOverlays = mapVIEw.getoverlays(); Drawable drawable = this.getResources().getDrawable(R.drawable.jd_sports_logo); Helloitemizedoverlay itemizedoverlay = new Helloitemizedoverlay(drawable); //Declared longitude/latitude as doubles as GeoPoint only uses 'int' - converted to microdegrees double latitude = 51.545538; double longitude = -0.477247; GeoPoint point = new GeoPoint((int)(latitude * 1e6),(int)(longitude * 1e6)); OverlayItem overlayitem = new OverlayItem(point,"Hola,Mundo!","I'm in Mexico City!"); itemizedoverlay.addOverlay(overlayitem); mapOverlays.add(itemizedoverlay); } } 我的Helloitemizedoverlay类:
package testing.map;import java.util.Array@R_403_6818@;import androID.graphics.drawable.Drawable;import androID.app.AlertDialog;import androID.content.Context;import com.Google.androID.maps.itemizedoverlay;import com.Google.androID.maps.OverlayItem;public class Helloitemizedoverlay extends itemizedoverlay { private Array@R_403_6818@<OverlayItem> mOverlays = new Array@R_403_6818@<OverlayItem>(); public Helloitemizedoverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public voID addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } public Helloitemizedoverlay(Drawable defaultMarker,Context context) { super(defaultMarker); Context mContext = context; } @OverrIDe protected OverlayItem createItem(int i) { // Todo auto-generated method stub return mOverlays.get(i); } @OverrIDe public int size() { // Todo auto-generated method stub return mOverlays.size(); } @OverrIDe protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); Context mContext = null; AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; }}解决方法 您缺少主类中的Context. 添加这个:
Helloitemizedoverlay itemizedoverlay = new Helloitemizedoverlay(drawable,mContext);where mContext = this;
而不是这个:
Helloitemizedoverlay itemizedoverlay = new Helloitemizedoverlay(drawable);总结
以上是内存溢出为你收集整理的当使用onTap()时,Android Google Map视图会返回错误 – 应该显示Alertdialog全部内容,希望文章能够帮你解决当使用onTap()时,Android Google Map视图会返回错误 – 应该显示Alertdialog所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)