我的应用程序仅在Google地图上显示地图。我的问题是当我改变屏幕的位置(我安装在平板电脑上的应用程序)时,在显示地图之前显示的是一个白色屏幕。
我的配置; res / layout / main.xml和res / layout-land / main.xml从纵向模式切换到横向模式。
应该添加或执行哪些操作来解决此问题?
答案 0 :(得分:0)
由于您已在布局文件中指定了地图片段,因此可以使用findFragmentById
中的onCreate
安全地找到它,如下所示:
MapFragment mMapFragment; // this is neither GoogleMap or MapView!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map);
initializeMap();
}
@Override
public void onResume() {
super.onResume();
// map init was already done in onCreate, will not do it twice
}
然后,当您需要GoogleMap
对象时,您需要它并通过回调传递它。执行回调时,映射保证不为null。这将适用于Google Play服务库v6.5。
private void initializeMap() {
mMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
// googleMap will never be null here
// do not store it in a variable, always make a getMapAsync call
// do your map setup here
}
}
}
这是最快的,所以你不应该经历任何闪烁。
注意:在您提到的原始帖子中,您有不同的纵向和横向布局。如果你真的这样做,请确保两者都包含相应的片段 ID,否则你必须获得例外。您还提到布局为main.xml
而不是activity_main.xml
,因此请确保使用您想要的布局。
答案 1 :(得分:0)
我解决了我在阅读此问题时遇到的问题(在Android上自动重启活动)Activity restart on rotation Android