java - MapView 空指针异常

标签 java android android-mapview

我已经完成了 Hello MapView 教程,但是当我触摸市场时,应用程序出现问题,它只是强制关闭,并且在 LogCat 中显示 java.lang.NullPointerException 。

这是代码:

package rs.iz.stevy.wifi;

import java.util.List;

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.graphics.drawable.Drawable;
import android.os.Bundle;


public class WiFiKupacicaActivity extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MapView mapa= (MapView) findViewById(R.id.Mapa1);
    mapa.setBuiltInZoomControls(true);
    mapa.setSatellite(true);

List<Overlay> mapOverlays = mapa.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.green);
MapOverlay itemizedoverlay = new  MapOverlay(drawable);

GeoPoint point = new GeoPoint(19240000,-99120000);
OverlayItem overlayitem = new OverlayItem(point, "Hello","Just don't force close");

GeoPoint point2 = new GeoPoint(35410000, 139460000);
OverlayItem overlayitem2 = new OverlayItem(point2, "Sekai, konichiwa","Japan!");

itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
itemizedoverlay.addOverlay(overlayitem2);


}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

第二类:

package rs.iz.stevy.wifi;

import java.util.ArrayList;

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 MapOverlay extends ItemizedOverlay {


private ArrayList<OverlayItem>mOverlays= new ArrayList<OverlayItem>();
private Context mContext;


public MapOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
}
public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}

@Override
protected OverlayItem createItem(int i) {
    return mOverlays.get(i); }

@Override
public int size() {
    return mOverlays.size();
}

//itemizedoverlay.addOverlay(overlayitem);
//mapOverlays.add(itemizedoverlay);

//@Override
protected boolean onTap(int index) {
  OverlayItem item = mOverlays.get(index);
  AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
  dialog.setTitle(item.getTitle());
  dialog.setMessage(item.getSnippet());
  dialog.show();
  return true;
}

}

我认为问题可能出在 context = mContext; 的某个地方。但我找不到错误可能出在哪里。请提供任何帮助,我将不胜感激。

最佳答案

是的,它是上下文,onTap方法不知道它是什么,所以替换:

public MapOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
}

public MapOverlay(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
}

以及对构造函数的调用

MapOverlay itemizedoverlay = new  MapOverlay(drawable, this);

关于java - MapView 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274613/

相关文章:

java - 尝试在 java 中声明类时出现错误

java - 从应用程序中删除已部署的 Web 应用程序中的文件

android - JNI 检测到应用程序错误

android - GestureDetector 已弃用的问题

android - 我可以将 SupportMapFragment 更改为 Google Maps v2 上的 Mapview 吗?

java - 使用 XMLStreamReader API 读取 W3C 文档后解析它

java - 与 GWT 聊天客户端

Android AppWidget 映射 Activity 问题

java - 解决错误 'can not resolve symbol'

android - 在 InApp 购买中出现此错误代码 3 的可能性有哪些?