Here Map Android Map Fragment 回压处理
Heremap AndroidXMapFragment back press handling
我使用 HERE 地图 Android SDK 及其 AndroidXMapFragment。
我通过以下方式将地图片段添加到我的片段容器中:
appActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, hereMapFragment, TAG)
.addToBackStack(TAG)
.commit();
但是当发生后退动作时,我得到一个空片段,其中没有地图和对象。
所以,问题是:我应该如何处理回按,我应该手动重新创建 AndroidXMapFragment 吗?
在文档中,我唯一发现的是:
AndroidXMapFragment objects have their own lifecycle, state, and back stack, thus it is unsafe to assume objects returned by a AndroidXMapFragment instance (with the exception of Map) will be available throughout the lifetime of its attached activity.
在尝试了不同的方法后,我找到了问题的答案。
所以答案是:
如果您必须使用应用程序的 fragment-based 架构,您应该手动处理后退并重新创建 AndroidXMapFragment 并使用您拥有的参数再次初始化它。
在这种情况下,您应该使用:
appActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, searchLocationFragment, TAG)
.commit();
没有 addToBackStack 方法。并且还可以使用 Activity 的覆盖方法来处理后退压力:
@Override public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
AppController.instance(this).onBackPressed(fragment);
}
但如果不需要保留fragment-based架构,我建议使用最新的sdk。有一个 MapView,您可以使用它代替 AndroidXMapFragment。
我使用 HERE 地图 Android SDK 及其 AndroidXMapFragment。 我通过以下方式将地图片段添加到我的片段容器中:
appActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, hereMapFragment, TAG)
.addToBackStack(TAG)
.commit();
但是当发生后退动作时,我得到一个空片段,其中没有地图和对象。 所以,问题是:我应该如何处理回按,我应该手动重新创建 AndroidXMapFragment 吗? 在文档中,我唯一发现的是:
AndroidXMapFragment objects have their own lifecycle, state, and back stack, thus it is unsafe to assume objects returned by a AndroidXMapFragment instance (with the exception of Map) will be available throughout the lifetime of its attached activity.
在尝试了不同的方法后,我找到了问题的答案。 所以答案是: 如果您必须使用应用程序的 fragment-based 架构,您应该手动处理后退并重新创建 AndroidXMapFragment 并使用您拥有的参数再次初始化它。 在这种情况下,您应该使用:
appActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, searchLocationFragment, TAG)
.commit();
没有 addToBackStack 方法。并且还可以使用 Activity 的覆盖方法来处理后退压力:
@Override public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
AppController.instance(this).onBackPressed(fragment);
}
但如果不需要保留fragment-based架构,我建议使用最新的sdk。有一个 MapView,您可以使用它代替 AndroidXMapFragment。