안녕하세용, 이번엔 로크켓과 소스를 제대로 올려 질문해요 ㅠㅠ
현재 구글맵에 마커 띄우고 그 마커에 대한 설명을 띄우는 연습을 하고 있는데요,
마커뜨는것 까지는 되는데, 그 마커를 클릭하면 어플이 stopped unexpectly 메세지와 함께 죽어버려요 ㅠ
로그캣 확인 결과는 다음과 같습니다.
10-13 04:17:51.270: ERROR/MapActivity(295): Couldn't get connection factory client
10-13 04:18:09.488: ERROR/AndroidRuntime(295): FATAL EXCEPTION: main
10-13 04:18:09.488: ERROR/AndroidRuntime(295): java.lang.NullPointerException
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:743)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:273)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at six.project.map.MyPartt$HelloItemizedOverlay.onTap(MyPartt.java:100)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:347)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.google.android.maps.MapView.onTouchEvent(MapView.java:647)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.view.View.dispatchTouchEvent(View.java:3766)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.os.Looper.loop(Looper.java:123)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at java.lang.reflect.Method.invokeNative(Native Method)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at java.lang.reflect.Method.invoke(Method.java:521)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-13 04:18:09.488: ERROR/AndroidRuntime(295): at dalvik.system.NativeStart.main(Native Method)
그리고 해당 부분 소스코드 입니다.
@Override
public 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;
}
어디가 잘못되었는지 한번 봐주시면 정말 감사하겠습니다.. 저는 정말 초보라 쉽게쉽게 설명해주세요~ ^^
공지사항을 다 읽었음
public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
Context mContext; // Class member 변수로 mContext 설정
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
//boundCenterBottom method를 사용하여 이미지의 중간 아래가 포인트에 오도록 함
this.mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
같은 클래스 안에서 이렇게 받아왔는데요 ㅠ 뭔가 잘못되었나요?
package six.project.map;
import java.util.ArrayList; import java.util.List;
import com.google.android.maps.GeoPoint; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle;
public class MyPartt extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker2);
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, null);
GeoPoint point2 = new GeoPoint(37297135,126971430);
OverlayItem overlayitem2 = new OverlayItem(point2, "평화각", "맛있는 짜장면집");
GeoPoint point3 = new GeoPoint(37297399,126973908);
OverlayItem overlayitem3 = new OverlayItem(point3, "믿음분식", "성대세트 8000원");
itemizedoverlay.addOverlay(overlayitem2);
itemizedoverlay.addOverlay(overlayitem3);
mapOverlays.add(itemizedoverlay);
MapController mapControl = mapView.getController();
mapControl.setCenter(itemizedoverlay.getCenter());
mapControl.setZoom(17);
//mapControl.zoomToSpan(itemizedoverlay.getLatSpanE6(),itemizedoverlay.getLonSpanE6());
}
public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
Context mContext;
// Class member 변수로 mContext 설정
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
//boundCenterBottom method를 사용하여 이미지의 중간 아래가 포인트에 오도록 함
mContext = context;
}
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();
}
@Override
public 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;
}
}
@Override
protected boolean isRouteDisplayed(){
return false;
}
}



mContext이거 널인지 확인해보세요...