java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout нельзя преобразовать в com.google.android.maps.MapView

Вот мой код активности

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
    mapView = (MapView) findViewById(R.id.map);

GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map))
        .getMap();
}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.id.map, container, false);
}

а это мой ЛогКэт

03-22 11:53:38.497: E/AndroidRuntime(436): FATAL EXCEPTION: main
03-22 11:53:38.497: E/AndroidRuntime(436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.alltaskass/com.example.alltaskass.Map}: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to com.google.android.maps.MapView
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread.access$1500(ActivityThread.java:123)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.os.Looper.loop(Looper.java:126)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread.main(ActivityThread.java:3997)
03-22 11:53:38.497: E/AndroidRuntime(436):  at java.lang.reflect.Method.invokeNative(Native Method)
03-22 11:53:38.497: E/AndroidRuntime(436):  at java.lang.reflect.Method.invoke(Method.java:491)
03-22 11:53:38.497: E/AndroidRuntime(436):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-22 11:53:38.497: E/AndroidRuntime(436):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-22 11:53:38.497: E/AndroidRuntime(436):  at dalvik.system.NativeStart.main(Native Method)
03-22 11:53:38.497: E/AndroidRuntime(436): Caused by: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to com.google.android.maps.MapView
03-22 11:53:38.497: E/AndroidRuntime(436):  at com.example.alltaskass.Map.onCreate(Map.java:35)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-22 11:53:38.497: E/AndroidRuntime(436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
03-22 11:53:38.497: E/AndroidRuntime(436):  ... 11 more

Я уже посетил это и это решение, но я все еще не могу решить свою проблему. Пожалуйста, дайте мне какое-нибудь решение. Спасибо


person Kirtikumar A.    schedule 22.03.2013    source источник


Ответы (1)


Я не могу понять ваш код:

  1. Сначала вы пытаетесь получить MapView:

    mapView = (MapView) findViewById(R.id.map);
    
  2. Затем вы пытаетесь получить SupportMapFragment:

    GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    

из того же элемента пользовательского интерфейса: R.id.map

В то время как MapView является элементом API V1 Google Map, а SupportMapFragment — элементом API V2.

Что вы используете в макете R.layout.map? покажи нам его код.

если вы хотите использовать API V2, здесь я написал сообщение в блоге о том, как интегрировать карту в ваше приложение:

API Карт Google версии 2

person Emil Adz    schedule 22.03.2013
comment
While MapView is a Google Map API V1 неверная часть Google Map API V2 - person Muhammad Babar; 17.06.2014