android - 如何从片段中的活动从 BroadcastReceiver 获取数据?
问题描述
我有一个可以捕获条形码扫描的 BroadcastReceiver,然后我必须在我的 EditText 中设置该数据,EditText 在 Fragment 中,而 BroadcastReceiver 在 Activity 中。
如何在我的片段中捕获来自 BroadcastReceiver 的数据?
最初我只是在我的活动中将数据设置为片段的 EditText,但有时会返回空指针,所以我决定最好在片段中设置。
我的广播接收器在活动:
override fun onPause() {
super.onPause()
unregisterReceiver(broadcastReceiver)
}
override fun onResume() {
super.onResume()
val filter = IntentFilter()
filter.addAction(Intent.CATEGORY_DEFAULT)
filter.addAction("it.XXX.XXX")
registerReceiver(broadcastReceiver, filter)
}
private val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
when (intent?.action) {
"it.XXX.XXX" -> {
val barcode = intent.getStringExtra("com.symbol.datawedge.data_string")
if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_EXPANDED) {
searchView.setQuery(barcode, true)
} else {
val txtBarcode = findViewById<EditText>(R.id.txtBarcode) // these two edittext are in fragment
txtBarcode.setText(barcode)
val txtQta = findViewById<EditText>(R.id.txtQta)
txtQta.requestFocus()
}
}
}
}
}
}
解决方案
推荐阅读
- python - TensorFlow-GPU 找不到 GPU
- ios - 使用 JSOUP 查找 HTML 类的正则表达式
- python - Twitter机器人问题
- delphi - 如何在 Firemonkey 中将 onFinish evant 添加到 TAnimate
- python - 用 selenium 下载 facebook 视频
- r - 在简单的 Shiny 示例中使用 group_by 和 checkboxGroupInput
- azure - Microsoft Azure 自定义域检查自定义域添加操作失败
- prolog - Prolog 问题:变量有问题(如果我需要它们)
- reactjs - 在 reactjs 中提交表单后,如何获取数据或将数据从一个页面传递到另一个页面
- bash - 用于检查文件是否存在于另一个目录(包括子目录)中的 Bash 脚本