OnTap делает itemizedOverlay и активность падает из-за плохих конструкторов - PullRequest
2 голосов
/ 16 марта 2012

У меня есть Mapactivity, который добавляет некоторые элементы из наложенных элементов, но всякий раз, когда я нажимаю на элемент, он дает мне исключение нулевого указателя и, конечно, вылетает.Я провел много исследований, и все результаты говорят, что это из-за плохих разработчиков и контекста, но проблема в том, что их решения не работают для меня.вот некоторые связанные темы

  1. ссылка 1
  2. ссылка 2
  3. ссылка 3 i 'я пробовал это, this.getApplicationContext, но все еще, у меня есть нулевой указатель ewception

вот где я вызываю мои оверлейные элементы в моем классе mapActivity:

 marker1 =getResources().getDrawable(R.drawable.maps_position_marker);
        marker1.setBounds( (int) (-marker1.getIntrinsicWidth()/2),
        -marker1.getIntrinsicHeight(),
        (int) (marker1.getIntrinsicWidth()/2),
        0);
        overlay4 notFunPlaces =  new overlay4(marker1, this.getBaseContext());
        mapView.getOverlays().add(notFunPlaces);
       // GeoPoint pt1 = notFunPlaces.getCenterPt();
        int latSpan1 = notFunPlaces.getLatSpanE6();
        int lonSpan1 = notFunPlaces.getLonSpanE6();
        Log.v("Overlays", "Lat span is " + latSpan1);
        Log.v("Overlays", "Lon span is " + lonSpan1);


my itmizedOverlay class class:

@SuppressWarnings("rawtypes")
    class overlay4 extends ItemizedOverlay {

        private ArrayList<OverlayItem> locations =
        new ArrayList<OverlayItem>();
        private Context mContext;
        private PopupPanel panel=new PopupPanel(R.layout.popup);



        public <getBaseContext> overlay4(Drawable marker, getBaseContext context )
        {

            super(boundCenterBottom(marker));
            mContext = (Context) context;
  //  my items
.........
populates();}

 @Override
                protected boolean onTap(int i) {

                  OverlayItem item=getItem(i);
                  GeoPoint geo=item.getPoint();
                  Bitmap bitmap = null;

              Point pro=    mapView.getProjection().toPixels(geo, null);
                  if (pro!=null)
                  {   View view=panel.getView();

              String capteur=   getType (locations.get(i).getSnippet()); 
                  ((TextView)view.findViewById(R.id.poptext))
                    .setText(String.valueOf("image captured by : " + capteur + "\n" + "Latitude = " + locations.get(i).getPoint().getLatitudeE6()/1E6 +" " + "Longitude = "+ locations.get(i).getPoint().getLongitudeE6()/1E6 +" " + 
                             "\n" + "Image can be found at the following directory :" + locations.get(i).getTitle()

                            ));
                  ImageView image= (ImageView) findViewById(R.id.ImageV);
        ........         

мой logcat:

 FATAL EXCEPTION: main
 java.lang.NullPointerException
     at tfe.rma.ciss.be.TheMap$overlay4.onTap(TheMap.java:3705)
     at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
     at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
     at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:356)
     at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533)
     at com.google.android.maps.MapView.onTouchEvent(MapView.java:683)
     at android.view.View.dispatchTouchEvent(View.java:3885)
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1750)
     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1135)
     at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1734)
     at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2216)
     at android.view.ViewRoot.handleMessage(ViewRoot.java:1887)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:123)
     at android.app.ActivityThread.main(ActivityThread.java:3687)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:507)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
     at dalvik.system.NativeStart.main(Native Method)
:   Force finishing activity tfe.rma.ciss.be/.TheMap
tate > /data/log/dumpstate_app_error
:   Force finishing activity tfe.rma.ciss.be/.menu
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...