【问题标题】:Google Maps Android Fragments load last markersGoogle Maps Android Fragments 加载最后一个标记
【发布时间】:2024-01-22 14:19:01
【问题描述】:

我正在使用带有片段的 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;
            }

这就是在片段中显示地图的方式

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
}

【问题讨论】:

    标签: android google-maps fragment


    【解决方案1】:

    可以覆盖onResume等Lifecycle方法

    查看这里了解更多详情...https://newcircle.com/s/post/1250/android_fragments_tutorial

    更具体地说 - onCreateView() 仅在第一次创建片段时调用。如果您覆盖 onResume(),您可以在片段每次重新聚焦时更新值和标记。

    @Override
    public void onResume(){
        super.onResume();
    
        <Your code here>
    }
    

    【讨论】:

    • 但是当我在片段上导航时,总是调用 onCreateView,或者我在片段中用于调用的代码可能需要在另一个地方
    • 那是因为你每次都在制作一个新的片段。尝试使用成员变量。
    【解决方案2】:

    我不确定这是否正确,但我的解决方案是先声明片段

    当使用开关控制时,我只隐藏片段和 显示必要的片段

    【讨论】:

      最近更新 更多