2010-07-22 2 views
1

지도 응용 프로그램을 만들려고하고 있으며 Google지도와 비슷한 작업을 수행해야합니다. 위치 목록을 표시하고 싶습니다. 사용자가 탭을 클릭하면 대화 상자를 표시하고 싶습니다.지도 오버레이 대화 상자에서 다른 활동 열기

여기까지 할 수있었습니다. 그러나 이제 사용자가 열린 대화 상자를 클릭하면 클릭 한 항목의 세부 정보와 함께 다른 활동을 표시하려고합니다.

새로운 의도를 시작하려고했지만 오류가 발생합니다. 여기

내가 여기

private void drawPopupWindow(Canvas canvas,int index, MapView mapView, boolean shadow) { 

     OverlayItem item = mOverlays.get(index); 
     GeoPoint geoPoint = item.getPoint(); 

     LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     LinearLayout dialogLayout = (LinearLayout)inflater.inflate(R.layout.location_dialog, null); 
     LayoutParams mapDialogParams = new LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       geoPoint, -1, -22, 
       LayoutParams.BOTTOM_CENTER); 
     mapView.addView(dialogLayout, mapDialogParams); 

     dialogLayout.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent detailIntent = new Intent(mContext, ItemDetailView.class); 
       mContext.startActivity(detailIntent); // I passed the context from mapActivity 
      } 
     });  

    } 

스택 추적

> E/AndroidRuntime(4985): 
> java.lang.RuntimeException: Unable to 
> start activity 
> ComponentInfo{com.achie.test.mapssample/com.achie.test.mapssample.ItemDetailView}: 
> android.view.InflateException: Binary 
> XML file line #2: Error inflating 
> class <unknown> E/AndroidRuntime(
> 4985): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
> E/AndroidRuntime(4985): at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
> E/AndroidRuntime(4985): at 
> android.app.ActivityThread.access$2200(ActivityThread.java:119) 
> E/AndroidRuntime(4985): at 
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
> E/AndroidRuntime(4985): at 
> android.os.Handler.dispatchMessage(Handler.java:99) 
> E/AndroidRuntime(4985): at 
> android.os.Looper.loop(Looper.java:123) 
> E/AndroidRuntime(4985): at 
> android.app.ActivityThread.main(ActivityThread.java:4363) 
> E/AndroidRuntime(4985): at 
> java.lang.reflect.Method.invokeNative(Native 
> Method) E/AndroidRuntime(4985): at 
> java.lang.reflect.Method.invoke(Method.java:521) 
> E/AndroidRuntime(4985): at 
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
> E/AndroidRuntime(4985): at 
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
> E/AndroidRuntime(4985): at 
> dalvik.system.NativeStart.main(Native 
> Method) E/AndroidRuntime(4985): 
> Caused by: 
> android.view.InflateException: Binary 
> XML file line #2: Error inflating 
> class <unknown> E/AndroidRuntime(
> 4985): at 
> android.view.LayoutInflater.createView(LayoutInflater.java:513) 
> E/AndroidRuntime(4985): at 
> android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) 
> E/AndroidRuntime(4985): at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
> E/AndroidRuntime(4985): at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
> E/AndroidRuntime(4985): at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
> E/AndroidRuntime(4985): at 
> com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
> E/AndroidRuntime(4985): at 
> android.app.Activity.setContentView(Activity.java:1622) 
> E/AndroidRuntime(4985): at 
> com.achie.test.mapssample.ItemDetailView.onCreate(ItemDetailView.java:11) 
> E/AndroidRuntime(4985): at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
> E/AndroidRuntime(4985): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
> E/AndroidRuntime(4985): ... 11 more 
> E/AndroidRuntime(4985): Caused by: 
> java.lang.reflect.InvocationTargetException 
> E/AndroidRuntime(4985): at 
> com.google.android.maps.MapView.<init>(MapView.java:238) 
> E/AndroidRuntime(4985): at 
> java.lang.reflect.Constructor.constructNative(Native 
> Method) E/AndroidRuntime(4985): at 
> java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
> E/AndroidRuntime(4985): at 
> android.view.LayoutInflater.createView(LayoutInflater.java:500) 
> E/AndroidRuntime(4985): ... 20 more 
> E/AndroidRuntime(4985): Caused by: 
> java.lang.IllegalArgumentException: 
> MapViews can only be created inside 
> instances of MapActivity. 
> E/AndroidRuntime(4985): at 
> com.google.android.maps.MapView.<init>(MapView.java:282) 
> E/AndroidRuntime(4985): at 
> com.google.android.maps.MapView.<init>(MapView.java:255) 
> E/AndroidRuntime(4985): ... 24 more 

가 왜이 오류가 무엇입니까와 어떻게이 문제를 해결하고 새로운 활동을 열 수있다 뭐하는 거지 무엇인가?

또한 안드로이드에서 Google지도의 소스 코드를 어디에서 찾을 수 있습니까?

감사합니다.

답변

3

스택 추적에서 "MapViews는 MapActivity 인스턴스 내에 만 만들 수 있습니다."라고 알려줍니다. MapActivity 외부에 MapView을 만들려고합니다. 이 작업을 수행하지 않도록 코드를 변경하면이 오류가 해결됩니다.

+0

고맙습니다. 예. 다른 mapView를 만들려고했습니다. – achie