我正在使用android的谷歌地图与片段,但在使用导航更改其他片段时出现问题。当我返回到有标记的片段并绘制地图时,应用程序再次绘制所有的地图和标记。我该如何控制这一切呢?请帮帮忙
这就是如何控制活动中片段的更改
switch (position){
case 0:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,mapFragment).commit();
break;
case 1:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,searchFragment).commit();
break;
case 2:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,promoFragment).commit();
break;
case 3:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,settingFragment).commit();
break;
}
这就是在片段中显示map的方式
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_map, container, false);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
map = new SupportMapFragment();
transaction.add(R.id.map, map);
transaction.commit();
map.getMapAsync(this);
return view;
}
public void onMapReady(GoogleMap googleMap) {
database = new Database(getContext());
readItems(googleMap); //Show all markers
}
发布于 2016-05-17 20:37:40
您可以覆盖生命周期方法,如onResume
请查看此处了解更多详细信息...https://newcircle.com/s/post/1250/android_fragments_tutorial
更具体地说,只有在第一次创建片段时才会调用onCreateView()
。如果覆盖onResume()
,则可以在每次片段返回焦点时更新值和标记。
@Override
public void onResume(){
super.onResume();
<Your code here>
}
发布于 2016-05-17 22:00:48
我不确定这样做是否正确,但mi的解决方案是先声明片段。
当使用开关进行控制时,我只隐藏片段并显示必要的片段
https://stackoverflow.com/questions/37285711
复制