android - 无法通过广播从服务到片段获取数据
问题描述
我想接收从服务发送到我的片段的数据。我正在从我的服务发送数据:
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);
}
代码编译并运行良好,没有任何错误。
我不知道当我将广播发送到活动时,相同的代码运行良好,给出了预期的结果,但在片段上不起作用,这是什么问题。有遇到同样问题的人吗??
解决方案
推荐阅读
- python-3.x - 为什么在 PyTorch 中在 GPU 上创建单个张量需要 2.5 秒?
- javascript - javascript overwrite previous element added to array
- android - 如何防止在缩放动画期间挤压布局内的项目?
- ssl - 谷歌云:尝试使用谷歌管理的证书自动化 https glb
- google-api - How to replace people.me from Google+ with Google People/Google Sign In api?
- javascript - Returning undefined object when doing a query
- r - How to use Cairo PNGs in R Markdown
- reactjs - Cannot find module 'delegates' in CRA yarn add node-sass
- python - 可以/不能用于压缩稀疏行 (CSR) 矩阵的 numpy 函数
- ios - 为什么从资产初始化后 UIImage 会旋转?