【问题标题】:Several fragments need location updates几个片段需要位置更新
【发布时间】:2013-09-24 14:41:53
【问题描述】:

我正在搞乱一个由两个片段组成的应用程序,每个片段都在自己的标签中。一个是listfragment,另一个是mapfragment。两个片段都需要随着位置的变化而更新位置。

我正在阅读this 教程。

我想知道是否应该在主机活动上实现这一点,并在位置更新时将位置传递给每个片段。但我不确定如何去做。因为 listfragment 需要将它传递给与该类关联的加载器。

或者为每个片段实现回调,并可能将 ErrorDialogFragment 和 servicesConnected 作为宿主类的成员?或者甚至在单独的班级?避免重复代码。

你们觉得呢?

【问题讨论】:

    标签: java android oop android-fragments


    【解决方案1】:

    一种选择是使用 LocalBroadcastManager:

    在需要此位置的每个片段中,为操作“LOCATION_WAS_JUST_UPDATED”注册一个接收器。

    我不确定您在哪里检索该位置,但无论如何它都会起作用。例如,如果它在服务中,您所要做的就是调用:

    LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent("LOCATION_WAS_JUST_UPDATED"));
    

    您当然可以使用此 Intent 传递捆绑包中的位置,或者只是将其设置在持久容器中,接收此广播的片段可以更新其本地位置。

    【讨论】:

    • 我检索主(主机)活动的位置。 LocalBroadcastManager 似乎是个好主意。但我仍然有点不确定程序流程应该如何。因为在主机上,我可能应该启动一些进度对话框,我应该在单个片段中结束。
    • 那更简单。您应该在 Activity 中实现一个函数 getLocation。每个活动都应该在开始使用此功能时通过使用getActivity.getLocation 获取位置。如果该位置不可用,则显示加载程序,直到收到广播。或者更简单,只允许活动显示加载器,并且仅在检索位置时显示片段。你的选择太多了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多