Android(Java)-不断地将更新/活动变量从活动传递到片段

Android(Java)-不断地将更新/活动变量从活动传递到片段,android,android-fragments,broadcastreceiver,fragment,android-fragmentactivity,Android,Android Fragments,Broadcastreceiver,Fragment,Android Fragmentactivity,我有一个MainActivity.java,它使用BroadcastReceiver不断(像每隔2秒一样)检测它从其他外部设备接收到的信号。然后这个主活动是活动的,并不断检测信号,它不断统计它接收到多少信号,然后存储在一个变量(varA)中。此后,我需要显示SignalFragment.java中接收到多少信号(varA)(使用fragment作为我需要的选项卡/寻呼机,使用onCreateView),并且每当BroadcastReceiver检测到信号时(每当varA更改/更新时),Signa

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


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

每次需要更新时,您都可以使用类似于发布到
片段的事件总线。实际上,您可以直接将更新从
BroadcastReceiver
推送到
Fragment
,这取决于您最初创建SignalFragment实例的方式。 您可以调用实例,也可以从片段管理器中查找实例

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

你不能在SignalFragment中有一个方法,可以调用它来更新textView吗?父活动可以在需要更新时调用它。挑战是什么?如果需要更多帮助,请显示代码。@uDevel,我尝试在SignalFragment中使用一个方法,但不起作用。public void setNoOfDevices(int noOfDevices){textview.setText(Integer.toString(noOfDevices));}然后在我的main活动中,我调用了SignalFragment sf=new SignalFragment();sf.setNoOfDevices(值);但是它没有显示。您没有创建一个新片段来调用该方法,是吗?你应该得到现有的片段,然后调用它的方法,对吗?哦,废话。如何获取现有片段?>我把它放在了回答中:我如何将更新直接从BroadcastReceiver推送到片段中?除了使用Otto,还有其他方法吗?是的,但在我看来,它们将更难实现。很抱歉这个愚蠢的问题,findFragmentByTag(TAG\u SIGNAL\u Fragment)是什么?听起来你不确定你是如何创建这个片段的。您可能需要显示更多关于如何创建它的代码。嘿,谢谢您的帮助!但我认为现在的问题不同了。我正在使用androidhive中的这个示例,现在我希望片段共享broadcastreceiver接收到的内容。但是我不知道把广播接收器放在标签适配器上?还是主要的活动?然后,我注册这些片段,让它们共享来自广播接收器的数据?非常感谢你的帮助!!一个项目急需这个。我现在面临着与此相同的问题。有什么建议吗?:(