【问题标题】:Android (Java) - Constantly Passing Updated/Live Variable from Activity To FragmentAndroid (Java) - 不断将更新/实时变量从活动传递到片段
【发布时间】:2014-05-21 16:22:48
【问题描述】:

我有一个 MainActivity.java,它使用 BroadcastReceiver 不断地(就像每隔 2 秒一样)检测它从其他外部设备接收到的信号。然后这个 MainActivity 是实时的并不断检测信号,它不断地计算它接收到的信号数量,然后存储在一个变量 (varA) 中。此后,我需要显示 SignalFragment.java 中已接收到多少信号(varA)(使用片段,因为我需要选项卡/寻呼机,使用 onCreateView),并且 SignalFragment 中的显示应该是实时的,并且会更新并显示在每当 BroadcastReceiver 检测到信号时(每当 varA 更改/更新)时的文本视图。

但是,即使我使用 GlobalState 变量,我也无法不断更新 SignalFragment。您如何不断更新 SignalFragment 中的文本视图/或不断将变量从 MainActivity 传递给 SignalFragment?如何做到这一点?

【问题讨论】:

  • 难道不能只在 SignalFragment 中有一个可以调用来更新 textView 的方法吗?父活动可以在需要更新时调用它。有什么挑战?如果需要更多帮助,请显示代码。
  • @uDevel,我尝试在 SignalFragment 中使用一个方法,但它不起作用。公共无效 setNoOfDevices(int noOfDevices) { textview.setText(Integer.toString(noOfDevices));然后在我的 MainActivity 中,我调用 SignalFragment sf = new SignalFragment(); sf.setNoOfDevices(值);但它没有显示。
  • 您没有创建一个新片段来调用该方法,是吗?你应该得到现有的片段,然后调用它的方法,对吧?
  • 哦,废话。如何获取现有片段? >
  • 我把它放在答案里

标签: android android-fragments broadcastreceiver fragment android-fragmentactivity


【解决方案1】:

每次需要更新时,您都可以使用Otto 之类的事件总线将其发布到您的Fragment。实际上,您可以将更新直接从您的BroadcastReceiver 推送到Fragment

【讨论】:

  • 如何将更新直接从 BroadcastReceiver 推送到 Fragment?
  • 除了使用Otto还有其他方法吗?
  • 是的,但在我看来,它们会更难实施。
【解决方案2】:

首先取决于您如何创建 SignalFragment 的实例。 您可以调用实例,也可以从片段管理器中查找实例。

    FragmentManager fragmentManager = getFragmentManager();
    Fragment fragment = fragmentManager.findFragmentByTag(TAG_SIGNAL_FRAGMENT);
    if(fragment != null)
    {
        ((SignalFragment) fragment).setNoOfDevices(some value);
    }

【讨论】:

  • 抱歉这个愚蠢的问题,findFragmentByTag(TAG_SIGNAL_FRAGMENT) 是什么?
  • developer.android.com/reference/android/app/… 听起来您不确定如何创建片段。您可能需要展示更多关于如何创建它的代码。
  • 您好,感谢您的帮助!但我现在遇到的问题不同了。我正在使用来自 androidhive 的这个示例,androidhive.info/2013/10/…,现在我希望片段共享广播接收器接收到的内容。但我不知道将广播接收器放在标签适配器上?还是主要活动?然后从那里,我注册片段并让它们共享来自广播接收器的数据?非常感谢你的帮助!!项目急需这个。
  • 我现在面临与stackoverflow.com/questions/20733810/… 相同的问题,请问有什么建议吗? :(
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多