Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LocalBroadcastManager从片段到活动未接收消息_Android_Android Fragments_Android Broadcastreceiver_Localbroadcastmanager - Fatal编程技术网

Android LocalBroadcastManager从片段到活动未接收消息

Android LocalBroadcastManager从片段到活动未接收消息,android,android-fragments,android-broadcastreceiver,localbroadcastmanager,Android,Android Fragments,Android Broadcastreceiver,Localbroadcastmanager,我想从片段向活动发送消息(不是片段父活动,而是另一个) 实际上,我从一个服务到同一个活动都做了同样的事情,效果非常好 这是我的代码: 片段: private void sendBroadcastMessage() { Intent intent = new Intent("my_event"); // add data intent.putExtra("message", "test"); LocalBroadcastManager.getInstance(get

我想从
片段
活动
发送消息(不是
片段
活动
,而是另一个)

实际上,我从一个
服务
到同一个
活动
都做了同样的事情,效果非常好

这是我的代码:

片段

private void sendBroadcastMessage() {
    Intent intent = new Intent("my_event");
    // add data
    intent.putExtra("message", "test");
    LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
}
活动

private BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent
        String message = intent.getStringExtra("message");

    }
};

@Override
protected void onPause() {
    // Unregister since the activity is not visible 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
    super.onPause();
}

@Override
protected void onResume() {
    super.onResume();    LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("my_event"));
}
我刚刚遵循了这一点,但它只适用于从
服务
活动

我认为这与
片段中的
上下文有关,可能
getActivity()
不是正确的方法

有什么想法吗?
谢谢。

在活动的onCreate中注册广播,并在onDestroy中注销

在您的情况下,它可能会在onPause中注销。因此,在onDestroy中注销,而不是onPause


谢谢,

是的,你不能这样做,因为另一个
活动
在广播时不会激活。您必须使用其他方法来传递数据。谢谢@MikeM。谢谢你的回复。好的,但是如果在广播时活动未处于活动状态,那么从服务发送广播时它是如何工作的?活动也不是活动的,但它是有效的……您对如何在没有
LocalBroadcastManager
的情况下实现这一点有什么建议吗?呃,不应该这样做,除非我们谈论的不是同一件事,或者除非他们更新了最新版本的
LocalBroadcastManager
,以提供自己版本的粘性广播。总之,您可以使用某种形式的持久存储来保存数据,直到您启动另一个
活动
,或者将其保存在
服务中
,直到另一个
活动
需要它,或者使用提供粘性事件的事件总线等。好的,我将尝试您的一个建议,非常感谢您对我的帮助;)