我有一个应用程序,我在其中附加了不同的片段和活动。在那个活动容器中,我正在替换不同的片段。
因此,在活动开始时,我替换了活动容器中的 MapFragment。后来我替换了其他片段,然后从主要活动中我再次替换了地图片段。虽然我认为我在片段中的映射实现错误,但我想知道并想做一些不同的事情,我认为因为我对片段没有更好的理解,所以我认为这就是为什么我得到空指针异常
到目前为止我做了什么
案例 1. 正如我在应用程序开始时所说的,我正在替换地图片段,但除了通过在谷歌地图 v2 中设置用户位置启用来显示用户当前位置之外什么都不做。所以点击地图的按钮让我们说显示其他位置,从服务器获取位置信息并在地图上绘制图钉。就地图片段而言,这很好用。
案例2
如果用户单击按钮让说“显示位置”而容器中有其他片段让说关于我们片段包含应用程序信息,所以现在在这个按钮上应该再次替换地图片段然后该片段中的功能这将从服务器下载位置并在地图上显示它们应该开始工作,因为我正在点击按钮
fragmentTransaction1.replace(R.id.frame, myMapFragment, "MyMapFragment").commit();
fragmentManager.executePendingTransactions();
myMapFragment.GetAllLocations("friendsLocation");
所以这个 GetLocations() 应该运行,但在这个阶段应用程序崩溃说空指针异常。并且在这个函数 myMapFragment.GetAllLocations("friendsLocation") 中需要我将其作为 getActivity() 的上下文,因为我必须使用需要上下文的 ION 库调用 web api,所以需要上下文。
所以这些是我的基本问题
我怎样才能知道片段已启动,然后我从 MainActivity 调用的函数应该在加载并启动 mapFragment 后运行,以便我无法在 getActivity() 中获取空上下文?
有没有其他方法可以做到这一点,我希望你理解我的需要,我想替换地图片段,我想通过将参数从主要活动传递给片段方法来同时调用片段方法,但是怎么做到呢 ?
我想到了一个想法,那就是在通过 Mainactivity 按钮替换地图片段时,我应该在 mapFragment 中设置一些静态值,比如说
public static boolean isLocationShouldDownload== flase //在地图片段中
我应该在替换片段时将其设置为真,然后当片段在运行状态后启动时,它应该检查这个变量是否为真(由主要活动设置)然后它应该下载并开始绘制引脚。但我不知道如何才能知道片段正在运行。
我不知道如何以及在何处实施我在第 3 点中所述的想法。
请与我分享您的想法并给我建议或分享我如何通过主要活动来完成此任务,该片段应替换和下载位置并在地图上显示它们而不会导致应用程序崩溃。