首页 > 解决方案 > 如何在我的 savedInstanceState 上修复 NullPointerException 以及它发生的原因

问题描述

在分离的 android 项目及其工作之前,我已经构建了这个映射应用程序。当我尝试与另一个系统集成时,问题就出现了,我已经复制了与以前的项目相同的所有代码是映射系统。问题是我的“savedInstanceState”上有空值,我怎么解决不了?

这适用于我的新项目的映射系统,在手机 android 9 上运行。我想在集成之前与项目 A(“..”)和项目 B(“映射系统”)集成完全可以工作。


-error message- on  mapView.onCreate(savedInstanceState);

private MapView mapView;
  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
'void com.mapbox.mapboxsdk.maps.MapView.onCreate(android.os.Bundle)' 
on a null object reference


  @Override
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

            Mapbox.getInstance(this,   "......");
            setContentView(R.layout.activity_main);
            mapView = findViewById(R.id.mapView);

            mapView.onCreate(savedInstanceState);
            mapView.getMapAsync(this);
    }

   @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle   outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        mapView.onSaveInstanceState(outState);
    }

预期结果:显示地图

实际结果:应用程序崩溃,因为我的“mapView.onCreate(savedInstanceState);”上有空值

标签: javaandroidmapbox

解决方案


savedInstanceState活动第一次开始时为空。

调用它的最安全方法是在任何地方使用它之前确保它不为空。

if(savedInstanceState != null) {
   mapView.onCreate(savedInstanceState);
}

推荐阅读