제가 특정 건물을 찾아서 마커를 띄우고 마커를 누르면 다이얼로그창이뜨면서 전화걸기까지 하려고하는데요
protected boolean onTap(int index){
OverlayItem item = items.get(index);
if("location".equals(items.get(index).getTitle())){
Toast.makeText(mContext, items.get(index).getSnippet(), Toast.LENGTH_SHORT).show();
}
else{
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.setCancelable(true);
//dialog.show();
return true;
}
return true;
}
일단 간단하게 ItemizedOverlay안에 onTap메소드 부분을 저런식으로 구성하였습니다.
현재위치를 나타내는 마커가 있는데 그건 타이틀을 location으로 주어서 Toast로 처리하였고
특정건물은 다이얼로그로 처리하려고 else문에 다이얼로그를 생성하는 간단한 문장을 넣어보았습니다. 하지만 마커를 누르면 에러가
나면서 구동되지 않네요 물론 현재위치 마커를 누르면 토스트가 잘 되구요
디버그 결과 dialog.show()에서 구동이 안되더군요 getTitle(), getSnippet()으로 정보는 읽어오는것을 확인하였습니다.
어떤식으로 해결해야되는지 아시는분 조언부탁드리겠습니다!!
다음은 로그캣 에러 내용입니다.
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): FATAL EXCEPTION: main
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewRoot.setView(ViewRoot.java:531)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.app.Dialog.show(Dialog.java:241)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at kr.candroid.MyItemizedOverlay.onTap(MyItemizedOverlay.java:86)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:356)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.google.android.maps.MapView.onTouchEvent(MapView.java:683)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.View.dispatchTouchEvent(View.java:3885)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1691)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1125)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1675)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2194)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.os.Looper.loop(Looper.java:123)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at java.lang.reflect.Method.invokeNative(Native Method)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at java.lang.reflect.Method.invoke(Method.java:507)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-09 05:57:45.594: ERROR/AndroidRuntime(2052): at dalvik.system.NativeStart.main(Native Method)




protected boolean onTap(int index) { final OverlayItem item = mOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setIcon(R.drawable.icon); dialog.setPositiveButton("전화걸기", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int index) { String a[] = item.getTitle().split(";"); mContext.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ a[1]))); }}); dialog.setNegativeButton("채용정보 보기", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int index) { Intent i = new Intent(mContext, webview.class); i.putExtra("http", item.getSnippet()); mContext.startActivity(i); } }); dialog.show(); return false; }