android - 如何在 android 中的 map fragment 和列表 fragment 之间交换,同时使用 AsyncTask 更新这两个 fragment

标签 android android-fragments android-maps android-maps-v2

在使用 MapView 时,我的策略非常简单,但我现在正在过渡到 Android Maps v2,并且必须使用 MapFragment。我的场景涉及获取事件列表,然后我需要在后台对这些事件进行地理解码以获取它们的纬度和经度,以计算与用户的距离并将其放置在 map 上。我有一个操作栏按钮,允许用户在列表和 map fragment 之间切换,但我的问题是如何将两个 fragment 保留在内存中并避免它们的生命周期,以便我可以在更新列表适配器时不断向 map fragment 添加标记在列表 fragment 中?

目前,我用 FragmentTransaction.replace 替换每个 Fragment 的 FrameLayout,但这会导致另一个 Fragment 被破坏,而我只是希望它被隐藏(在我简单地将 MapView 可见性设置为 View.GONE 之前)。

编辑

我的代码最终是:

@Override
    public void swapFragments() {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        if (listFragment.isVisible()) {
            transaction.hide(listFragment);
            if (mapFragment.isAdded()) {
                transaction.show(mapFragment);
            } else {
                transaction.add(R.id.root, mapFragment);
            }
        } else {
            transaction.hide(mapFragment);
            transaction.show(listFragment);
        }
        transaction.commit();
    }

最佳答案

我一直在做类似的事情。我所做的就是在主 FragmentActivityonCreate() 部分中创建两个 fragment --- 然后根据 onclick 操作,显示和隐藏相应的 fragment 。我通过在提交隐藏 listFragment 之前添加到后退堆栈来补充这一点,以便当用户按回键时,他们将再次获得列表,而不是之前的 Activity 。

但是,目前,由于某种原因,我无法让 MapFragment 中的 GoogleMap 不为空。

我解决了这个问题——你可以在这里找到类似的答案MapFragment Error - CameraUpdateFactory is not initialized

关于android - 如何在 android 中的 map fragment 和列表 fragment 之间交换,同时使用 AsyncTask 更新这两个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825708/

相关文章:

java - 完全消除对 Android 时钟的依赖并使用来自服务器的自定义时间

android - Lollipop 中的 Activity 和 Fragment 过渡

android - java.lang.NoClassDefFoundError : com. 谷歌.android.maps.GeoPoint

json - 捕获在 servlet 中使用 android volley 发送的 jsonobject 请求

java - 循环遍历 JSON 数据将其保存到 HashMap 中

javascript - Webview 重定向问题

java - 如何将带有 ArrayList 的 bundle 从 Fragment 传递到 Activity

java - 如何将包从一个 Activity 传递到放置在另一个 Activity 中的 fragment ?

Android:从谷歌地图获取无效的 KML 文件

Android 为谷歌地图上的标记设置监听器