首页 > 解决方案 > 无法通过广播从服务到片段获取数据

问题描述

我想接收从服务发送到我的片段的数据。我正在从我的服务发送数据:

Intent i1 = new Intent("com.iot.bcrec.randomreceive");
i1.putExtra("values",String.valueOf(value));
//Here value is the data i want to pass
sendBroadcast(i1);

在我的片段中,我使用了广播接收器:

 BroadcastReceiver qReciever = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String s1 = intent.getStringExtra("values");
        float flag = Float.parseFloat(s1);
        Log.i(TAG,"fragment = "+s1);
        //method which uses the received data
        addEntry(flag);
    }
};

通过检查日志值,我发现我的片段没有通过广播接收任何值。在调试我的代码时,我没有找到任何日志。我已经注册了我的广播:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container, 
    false);
....
IntentFilter filter = new IntentFilter("com.iot.bcrec.randomreceive"); 
LocalBroadcastManager.getInstance(getActivity()).registerReceiver
(qReciever,filter);
    return view;
}

并取消注册:

@Override
public void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver
    (qReciever);
}

代码编译并运行良好,没有任何错误。

我不知道当我将广播发送到活动时,相同的代码运行良好,给出了预期的结果,但在片段上不起作用,这是什么问题。有遇到同样问题的人吗??

标签: androidandroid-broadcastreceiver

解决方案


推荐阅读