使用碎片获取位置崩溃(Android)

使用碎片获取位置崩溃(Android),android,android-activity,crash,location,fragment,Android,Android Activity,Crash,Location,Fragment,好吧,这是一个非常愚蠢的问题,但在过去的一个小时里它一直困扰着我。 我会尽力解释的 基本上,我正在编程的应用程序有一个tabactivity,其中包含选项卡页面的片段。其中一个选项卡显示一个列表。此列表按用户与特定位置的距离排序 因此,因为我需要用户的当前位置,所以我在托管所有片段的活动中实现了2013位置api 我的问题是,当创建片段时,它会对列表进行排序。但要对列表进行排序,它需要用户的位置。但是,用户的位置尚未确定,因为片段是在locationclient在活动中连接之前创建的。由于loc

好吧,这是一个非常愚蠢的问题,但在过去的一个小时里它一直困扰着我。 我会尽力解释的

基本上,我正在编程的应用程序有一个tabactivity,其中包含选项卡页面的片段。其中一个选项卡显示一个列表。此列表按用户与特定位置的距离排序

因此,因为我需要用户的当前位置,所以我在托管所有片段的活动中实现了2013位置api

我的问题是,当创建片段时,它会对列表进行排序。但要对列表进行排序,它需要用户的位置。但是,用户的位置尚未确定,因为片段是在locationclient在活动中连接之前创建的。由于locationclient尚未连接,因此出现了一个导致应用程序崩溃的错误

总之,片段试图访问oncreateview方法中的位置,但应用程序崩溃,因为在locationclient连接并获取位置之前调用了此方法

我试过几种方法来解决这个问题,但是我被难倒了

有没有办法在确定位置之前延迟创建片段?我尝试将片段/选项卡创建代码放入onConnected()回调中,但这是错误的(例如,当设备旋转时,应用程序崩溃)

我对应用程序开发相当陌生,所以我可能只是误解了活动生命周期。任何帮助都将不胜感激


谢谢。

建立连接后,为什么不按需要执行操作?为什么要延迟创建片段?不要试图重新设计框架的工作方式,而是构建解决方案来解决您的问题。为什么不让你的片段在完成创建并变得可见时通知你的宿主活动,然后让活动获取位置并将其传递回需要该数据的片段?你们两个都说过我思考过程中说过的话。我说我曾尝试在调用onconnected()回调时创建片段,基本上是在位置已连接时。但是,我说我在使用它时遇到了问题。另外,我正在尝试让活动通知片段,而不是相反。您应该让活动启动位置管理器,然后让片段通过活动中的某种方法从活动中提取位置,即
getActivity().getLocation()删除所有需要该位置才能正确运行的代码,并将其移动到有位置时运行的方法。只需让片段视图加载,然后在获得位置后更新它