You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio集成Mapbox出现白屏崩溃问题求助

解决Mapbox集成白屏崩溃问题

从你的崩溃日志里一眼就揪出了核心问题:java.lang.ClassNotFoundException: 未找到类"com.mapbox.mapboxsdk.maps.Mapview"——注意这里的类名是小写的v,而Mapbox官方的正确类名是MapView(大写V),这就是XML解析时找不到类、直接导致崩溃的元凶。

第一步:修复XML布局的类名拼写错误

把布局里的com.mapbox.mapboxsdk.maps.Mapview改成com.mapbox.mapboxsdk.maps.MapView,修正后的完整布局代码:

<com.mapbox.mapboxsdk.maps.MapView 
    android:id="@+id/mapView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    mapbox:mapbox_cameraTargetLat="6.641183" 
    mapbox:mapbox_cameraTargetLng="46.7784736" 
    mapbox:mapbox_styleUrl="mapbox://styles/mapbox/streets-v10" 
    mapbox:mapbox_cameraZoom="12" />

第二步:修正Java代码里的冗余错误

你的Java代码还有几个小问题,也可能影响地图正常加载,一起调整:

  • 重复实现了onMapReady方法:一个是getMapAsync的内部回调,另一个是Activity的重写方法,后者完全多余,直接删掉即可。
  • 代码里有一行注释掉的setContentView(R.layout.activity_map);,确保你当前使用的activity_main布局确实包含了上面修正后的MapView。
  • 崩溃日志显示启动的是MainActivity,但你的类名是MapActivity,要保持一致:要么在AndroidManifest里把启动Activity改成MapActivity,要么把MapActivity的逻辑移到MainActivity中。

修正后的Java代码示例:

public class MapActivity extends AppCompatActivity { 
    private MapView mapView; 

    @Override protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        Mapbox.getInstance(this, "pk.eyJ1IjoidGlyYWlubyIsImEiOiJja2F6Y3ZyejQwaWJ6MnJtaWdmcmU3cjV5In0.5_0xHC_VyQUgyvUQ8IVNfA"); 
        setContentView(R.layout.activity_main); 
        mapView = findViewById(R.id.mapView); 
        mapView.onCreate(savedInstanceState); 
        mapView.getMapAsync(new OnMapReadyCallback() { 
            @Override public void onMapReady(@NonNull MapboxMap mapboxMap) { 
                mapboxMap.setStyle(Style.MAPBOX_STREETS, new Style.OnStyleLoaded() { 
                    @Override public void onStyleLoaded(@NonNull Style style) { 
                        // Map is set up and the style has loaded. Now you can add data or make other map adjustments. 
                    } 
                }); 
            } 
        }); 
    } 

    @Override public void onStart() { super.onStart(); mapView.onStart(); } 
    @Override public void onResume() { super.onResume(); mapView.onResume(); } 
    @Override public void onPause() { super.onPause(); mapView.onPause(); } 
    @Override public void onStop() { super.onStop(); mapView.onStop(); } 
    @Override public void onLowMemory() { super.onLowMemory(); mapView.onLowMemory(); } 
    @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } 
    @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); }
}

第三步:验证依赖配置

最后确认你Module级别的build.gradle里正确引入了Mapbox依赖,比如:

dependencies {
    implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.1' // 替换成你使用的对应版本
}

做完这些修改后,先清理项目(Build -> Clean Project)再重新运行,应该就能正常加载地图了。

内容的提问来源于stack exchange,提问作者Adriano Vieux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:02:37