java - 如何在我的 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);”上有空值
解决方案
savedInstanceState
活动第一次开始时为空。
调用它的最安全方法是在任何地方使用它之前确保它不为空。
if(savedInstanceState != null) {
mapView.onCreate(savedInstanceState);
}
推荐阅读
- date - Drupal 8 Thunder:如何只显示文章的日期而不显示时间?
- javascript - 倒数计时器:如何添加年份?
- c# - 由于对象的当前状态,Azure 服务总线“发送”抛出操作无效
- mapstruct - 在列表中注入所有映射器并以多态方式调用转换方法
- python - 如何使用 exec() 调用预定义代码?
- c# - 解析 JSON 结果并检查状态中的指定字符串
- javascript - Url 更改但不渲染组件 React Router
- java - 如何创建使用 Scanner 类来注册用户输入的方法?
- python - Celery 上的 Heroku 应用程序错误:raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
- python-asyncio - 从模块外部的异步动态更改日志级别