0

GoogleマップのマーカーのonTapに問題があります。

これはエラーです

05-31 21:46:21.420:E / AndroidRuntime(5541):java.lang.NullPointerException
05-31 21:46:21.420:E / AndroidRuntime(5541):com.android.internal.app.AlertController $ AlertParams。(AlertController.java:753)
05-31 21:46:21.420:E / AndroidRuntime(5541):android.app.AlertDialog $ Builder。(AlertDialog.java:273)
05-31 21:46:21.420:E / AndroidRuntime(5541):my.class.HelloMapView $ LocationOverlay.onTap(HelloMapView.java:1361)

これは、my.class.HelloMapView $ LocationOverlay.onTap(HelloMapView.java:1361)のエラーのコードです。

    public class LocationOverlay extends ItemizedOverlay<OverlayItem>  {
    //public class LocationOverlay extends ItemizedOverlay{
        private ArrayList<OverlayItem> overLayList = new ArrayList<OverlayItem>();
        private MapView mapView;
        public String pickedlat;
        public String pickedlng;
        private Context mContext;


        public LocationOverlay(MapView mapView, Drawable defaultMarker, Context context) {
            //super(null);
             super(boundCenterBottom(defaultMarker));
             mContext = context;
            this.mapView = mapView; // need it for onTap
            populate();

        }

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

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

        public void addOverlayItem(OverlayItem overlayItem) {
             if(!overLayList.contains(overlayItem)){
                  overLayList.add(overlayItem);
                  setLastFocusedIndex(-1);
                  populate();     
             }

           //  populate();
        }

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

エラーログで参照されている行はこれです

AlertDialog.Builderダイアログ=新しいAlertDialog.Builder(mContext);

そして、それについてのグーグルから推測できることは、おそらくmContextが渡されていないことです...しかし、私はそれを正しく理解できません...

助けてください

4

1 に答える 1

1

コンストラクターへの呼び出しを確認して、そこで null 値が渡される可能性があります。tのサブクラスであるため、thisキーワードを使用できますActivityContex

LocationOverlay locationOverlay = new LocationOverlay(mapView, getResources().getDrawable(R.drawable.polis), this);

または、フラグメントから呼び出している場合は、getActivity() メソッドを使用します

LocationOverlay locationOverlay = new LocationOverlay(mapView, getResources().getDrawable(R.drawable.polis), this.getActivity());
于 2012-06-06T01:21:15.813 に答える