2012-03-09 2 views
1

오류 보고서를 이해하는 데 도움이 필요하십니까? Android 마켓에 앱이 업로드되었거나 Google Play theese라고 불리며 내 사용자 중 하나가 강제로 닫은 상태에서 '보고서'버튼을 누르면 보고서가 수신되었습니다. 내가 아는 어떤 :MapActivity에서 온 이상한 오류보고

  • 는 내가 보고서 당시지도
  • 에 사용자 정의 마커를
  • 내 응용 프로그램의 MapActivity에서 와야 사이트는 아래로 난을 가져올 것 곳에서 수 마커에 대한 데이터, 그래서 거기에보고 당시 0 살아있는 마커가 있다는 것입니다
  • 내쪽에 가능한 nullpointer 오류가 있다고 생각, 내가 다 덮여 있다고 생각해.
  • 최대 마커의 숫자는 1입니다 (음침한 소리가 나기는하지만 앞으로는 바뀔 것입니다. 그래서 fi입니다. 앱이 여러 마커를 처리 할 수 ​​있음)
  • 오류 보고서에 내 코드에 대한 참조가 포함되어 있지 않습니다. Stacktrace가 안드로이드 맵을 가리키고 있습니다.
  • 이해, 일부 확대/축소 동작이 전체 확인 상점

언급 된 스택 트레이스 : 내가 거기 ~ 사용자, 그것은 여전히 ​​버그 나 2000 년부터에만이 한 보고서는, 나는 싶습니다 심지어 그래도, 어떻게 해야할지 아무 생각이

java.lang.NullPointerException 
at android.graphics.Canvas.<init>(Canvas.java:82) 
at com.google.android.maps.ZoomHelper.createSnapshot(ZoomHelper.java:447) 
at com.google.android.maps.ZoomHelper.doZoom(ZoomHelper.java:151) 
at com.google.android.maps.ZoomHelper.doZoom(ZoomHelper.java:140) 
at com.google.android.maps.MapView.doZoom(MapView.java:1478) 
at com.google.android.maps.MapView.doZoom(MapView.java:1487) 
at com.google.android.maps.MapView$6.onZoom(MapView.java:1442) 
at android.widget.ZoomButtonsController$3.onClick(ZoomButtonsController.java:268) 
at android.view.View.performClick(View.java:2420) 
at android.view.View$PerformClick.run(View.java:8844) 
at android.os.Handler.handleCallback(Handler.java:587) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 

그것을 커버하고 새로운 것을 배우는 것은 언제나 좋다. 하루의 끝에서. :) 내 코드에서

일부 조각은 :지도는 refreshTrain() 메소드에서 데이터를 가져 오는 AsyncTask를을, 시작을 만든 후

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 

    isCentered=false; 

    map = (MapView)findViewById(R.id.map_view); 

    map=(MapView)findViewById(R.id.map_view); 
    map.setBuiltInZoomControls(true); 

    extras = this.getIntent().getExtras(); 
    if(extras!=null) code=extras.getString("code"); 

    if(!isOnline()) 
    { 
     Toast.makeText(this, "Aktív internetkapcsolat szükséges!", Toast.LENGTH_SHORT).show(); 
     return; 
    } 

    refreshTrain(); 
} 

:

이 내가지도를 작성하는 방법입니다 웹 사이트, 그리고이 같은 onPostExecute (무효 PARAM)에 마커를 설정 :

마지막으로
protected void onPostExecute(Void param) 
    { 
     try 
     { 
      if(result.length()<10) //the site is offline or the request is not valid 
      { 
       Toast.makeText(ctx, "Nem érhetőek el a térképadatok, próbáld később...", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      JSONObject json = new JSONObject(result); //parse the result and set up the coordinates 
      latitude=json.getString("lat"); 
      longitude=json.getString("lon"); 
      double _lat=Double.parseDouble(latitude); 
      double _lon=Double.parseDouble(longitude); 
      int lat=(int)(_lat*1E6); 
      int lon=(int)(_lon*1E6); 

      event_time=getJson(json, "event_time"); //get additional informations about the train 
      start_station=getJson(json, "start_station"); 
      end_station=getJson(json, "end_station"); 

      MapController mc = map.getController(); //set the markers 
      List<Overlay> list = map.getOverlays(); 
      list.clear(); 
      Drawable drawable = getResources().getDrawable(R.drawable.pin); 
      Markers markers = new Markers(drawable); 
      GeoPoint p = new GeoPoint(lat, lon); 
      OverlayItem item = new OverlayItem(p, "vonat", "snippet"); 
      markers.addOverlayItem(item); 
      mc.setCenter(p); 
      mc.animateTo(p); 
      if(!isCentered) //dont change the zoom after each refresh, only on the first creation 
      { 
       mc.setZoom(12); 
       isCentered=true; 
      } 

      list.add(markers); 
     } 
     catch(JSONException e) 
     { 
      Log.e(TAG,e.getMessage()); 
     } 

    } 
} 

, 내 마커 클래스는 다음과 같이보고한다 :

,
private class Markers extends com.google.android.maps.ItemizedOverlay<OverlayItem> { 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 

    public Markers(Drawable defaultMarker) { 
     super(boundCenter(defaultMarker)); 
    } 

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

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

    public void addOverlayItem(OverlayItem item) 
    { 
     mOverlays.add(item); 
     populate(); 
    } 

    @Override 
    protected boolean onTap(int index) { //display the additional infos on tap 
     AlertDialog.Builder dialog = new AlertDialog.Builder(ctx); 
     dialog.setTitle("Frissítve: "+event_time); 
     dialog.setMessage(start_station+" \u2192 "+end_station); 
     dialog.show(); 
     return true; 
    } 

} 

환호

편집 : 코드는

EDIT2 추가 : 내가 지금까지 (확인 아무것도)을 발견 한 것을 오류가 토스트 메시지에서 올 수에서. 오류 시간에, 나는 어떤 활성 연결 (onCreate에 isOnline()이 없는지)을 확인하지 않으며, 사이트가 사용할 수 없다면 사용자에게 알리지 않을 것입니다. 그래서 토스트라면, 그것은 onPreExecute() 메서드에서 시작된 AsyncTask의 새로 고침 된 thingie는 아무 것도 발생하지 않습니다. 나는 추측하고 있지만 어쩌면 ...

+0

코드도 함께 게시하십시오. –

+0

맞아요, 일 초에 질문을 편집하십시오. 내 노트북을 가져 가야합니다. – hundeva

+0

Google지도 부가 기능의 버그처럼 보입니다. – CommonsWare

답변

0

이 오류가 다시 나타나지 않았기 때문에 문제가 아닌 것으로 생각합니다. 심지어 원인을 알지도 못했습니다.