오류 보고서를 이해하는 데 도움이 필요하십니까? 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는 아무 것도 발생하지 않습니다. 나는 추측하고 있지만 어쩌면 ...
코드도 함께 게시하십시오. –
맞아요, 일 초에 질문을 편집하십시오. 내 노트북을 가져 가야합니다. – hundeva
Google지도 부가 기능의 버그처럼 보입니다. – CommonsWare