【问题标题】:How can activity tell its fragments that location is available so they update contents活动如何告诉其片段位置可用,以便它们更新内容
【发布时间】:2017-06-05 05:42:01
【问题描述】:

这更像是一个设计问题。

所以我有一个底部导航活动(它有多个片段)。其中一个片段(默认加载的片段)具有文本视图,它将显示用户的位置信息。

当活动开始时,它会执行 googleApiClient 连接并向用户请求位置权限。当用户接受并完成所有这些时,片段已加载并且文本视图显示“未知位置”。这一切都在意料之中。

现在获取位置后(在用户接受之后),将这些信息传递给片段并告诉 textview 更新的正确方法是什么?

我可以进行轮询(这意味着如果处理程序计时器中的位置不为空,则继续检查位置)但我觉得这不是正确的方法。

任何关于如何完成类似操作的提示将不胜感激

谢谢。

【问题讨论】:

  • 通过接口类实现
  • 您可以通过接口创建自定义监听器。如果收集到了 Location,请收听它,然后在您的相关片段中触发它以更改文本。
  • 这是分片通信的活动,可以找到here
  • 谢谢大家。那么它应该是一个界面还是只是通过“片段”的活动应该听到它?一个答案将不胜感激,所以我可以接受。
  • @Snake 接口方式是为了fragment到activity的通信,但是你需要从activity内部的fragment中调用方法。只需检查我之前评论中的链接即可。

标签: android android-fragments location


【解决方案1】:

例如,只需在您的片段中定义适当的方法

public class FragmentA extends Fragment{

    public void changeLocationField(Location location){

    }
}

然后在活动中,从片段中调用你的方法

private LocationListener mListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        FragmentA fragmentA = (FragmentA)
                getSupportFragmentManager().findFragmentById(R.id.a_fragment);

        if (fragmentA != null) {
            fragmentA.changeLocationField(location);
        }
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多