2015-03-11 3 views
0

Я получаю эту ошибку при использовании:Как я могу исправить эту ошибку при использовании CameraUpdate

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 16); 

Я видел от других постов, которые мне нужно использовать addOnGlobalLayoutListener , но я попробовал это и косяк, кажется, заставить его работать

03-11 12:00:18.496 11035-11035/project.sharethefare E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: project.sharethefare, PID: 11035 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{project.sharethefare/project.sharethefare.Share}: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to android.widget.LinearLayout 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2725) 
      at android.app.ActivityThread.access$900(ActivityThread.java:172) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:145) 
      at android.app.ActivityThread.main(ActivityThread.java:5834) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183) 
    Caused by: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to android.widget.LinearLayout 
      at project.sharethefare.Share.setUpMap(Share.java:105) 
      at project.sharethefare.Share.setUpMapIfNeeded(Share.java:82) 
      at project.sharethefare.Share.onCreate(Share.java:53) 
      at android.app.Activity.performCreate(Activity.java:6221) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2725) 
            at android.app.ActivityThread.access$900(ActivityThread.java:172) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:145) 
            at android.app.ActivityThread.main(ActivityThread.java:5834) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183) 
03-11 12:00:21.816 13207-13207/project.sharethefare E/Zygote﹕ MountEmulatedStorage() 
03-11 12:00:21.816 13207-13207/project.sharethefare E/Zygote﹕ v2 

в разделе кода я получаю ошибку является:

private void setUpMap() { 
     final List <Marker> markers= new ArrayList<>(); 
     if(alreadyInit==false){ 
      marker = mMap.addMarker(new MarkerOptions().position(new LatLng(home.curLat,home.curLong)).title("Marker")); 
      markers.add(marker); 
      alreadyInit=true; 
     } 

      matchLocLat = client.getlat(); 
      matchLocLong = client.getlong(); 
     if(alreadyInit==true){ 
      marker = mMap.addMarker(new MarkerOptions().position(new LatLng(matchLocLat, matchLocLong)).title("Marker")); 
      markers.add(marker); 

      LinearLayout mapLayout = (LinearLayout)findViewById(R.id.shared_map); 
      mapLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
       @Override 
       public void onGlobalLayout() { 
        LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
        for (Marker marker : markers) { 
         builder.include(marker.getPosition()); 
        } 
        LatLngBounds bounds = builder.build(); 

        int padding = 0 ; // offset from edges of the map in pixels 
        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 16); 
        mMap.animateCamera(cu); 
       } 
      }); 


     } 

Я бы признателен за любую помощь и любые вопросы I'l ответить

+0

Это все сводится к этому: Вызванный: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout не может быть приведен к android.widget.LinearLayout Вы пытаетесь привести объект в тип его не имеет отношения is-a. – Stultuske

ответ

0

R.id.shared_map не LinearLayout, и поэтому вы не можете бросить его, чтобы быть LinearLayout. Это не имеет никакого отношения к CameraUpdateFactory.newLatLngBounds(bounds, 16).

Поскольку getViewTreeObserver() реализуется на View, одно решение было бы просто избавиться от броска, при условии, что на самом деле представляет собой R.id.shared_map все, что вы хотите получить ViewTreeObserver для.

+0

В порядке я понимаю, что вы имеете в виду, Как мне избавиться от актерского состава? как в том, как я напишу этот код –

+0

Ничего, я понял! Большое спасибо :) –

Смежные вопросы