如何从 BroadcastReceiver 发送和保存 Activity 中的字符串消息
How to send and save string message in Activity from BroadcastReceiver
如何从 BroadcastReceiver 中保存字符串消息并在 Activity 中使用保存的变量?我只找到 Toast.makeText 个示例。
我实际拥有的是:工作、注册的 BroadcastReceiver。我的应用程序 运行 在 DocumentActivity 中,当我点击 DataCollectionTerminal 上的“扫描”按钮时(Android 7.0 上的 DTC),DTC 获取消息并烤它。我可以在打开的 EditText 中捕获来自 DTC 的消息并将其保存在单击保存按钮上。
但我需要的是:按下扫描按钮 => DTC 获取条形码消息 => 发送到 Activity 并将其保存到某个变量 => 我可以完整地使用这个 var.value Activity,设置TextView,写入txt文档等
文档Activity
class DocumentActivity : AppCompatActivity() {
private val customBroadcastReceiver = CustomBroadcastReceiver()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(exp..R.layout.activity_document)
}
override fun onResume() {
super.onResume()
registerReceiver(
customBroadcastReceiver,
IntentFilter ("com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST")
)
}
override fun onStop() {
super.onStop()
unregisterReceiver(customBroadcastReceiver)
}
fun saveMessage(mes: String){
var code = mes
Toast.makeText(applicationContext, code, Toast.LENGTH_SHORT).show()
...
}}
广播接收器
class CustomBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val type = intent.getStringExtra("EXTRA_BARCODE_DECODING_SYMBOLE")
val barcode = intent.getStringExtra("EXTRA_BARCODE_DECODING_DATA")
val sb = StringBuilder()
sb.append("Type: $type, Barcode:$barcode\n")
Toast.makeText(context, sb.toString(), Toast.LENGTH_SHORT).show()
// Save mes, doesnt work
DocumentActivity().saveCell(barcode)
}}
您正在创建另一个 DocumentActivity 对象并将值保存在该对象的变量中,因此它不会反映在当前对象中。尝试使变量静态,然后从 broadcasteceiver 更新它。例如 DocumentActivity 中的变量是 barCodeVal 所以,
在文档活动中
companion object{
var barcodeVal = //some default value
}
然后从 broabcastreceiver
DocumentActivity.barcodeVal = barcode
如何从 BroadcastReceiver 中保存字符串消息并在 Activity 中使用保存的变量?我只找到 Toast.makeText 个示例。 我实际拥有的是:工作、注册的 BroadcastReceiver。我的应用程序 运行 在 DocumentActivity 中,当我点击 DataCollectionTerminal 上的“扫描”按钮时(Android 7.0 上的 DTC),DTC 获取消息并烤它。我可以在打开的 EditText 中捕获来自 DTC 的消息并将其保存在单击保存按钮上。
但我需要的是:按下扫描按钮 => DTC 获取条形码消息 => 发送到 Activity 并将其保存到某个变量 => 我可以完整地使用这个 var.value Activity,设置TextView,写入txt文档等
文档Activity
class DocumentActivity : AppCompatActivity() {
private val customBroadcastReceiver = CustomBroadcastReceiver()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(exp..R.layout.activity_document)
}
override fun onResume() {
super.onResume()
registerReceiver(
customBroadcastReceiver,
IntentFilter ("com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST")
)
}
override fun onStop() {
super.onStop()
unregisterReceiver(customBroadcastReceiver)
}
fun saveMessage(mes: String){
var code = mes
Toast.makeText(applicationContext, code, Toast.LENGTH_SHORT).show()
...
}}
广播接收器
class CustomBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val type = intent.getStringExtra("EXTRA_BARCODE_DECODING_SYMBOLE")
val barcode = intent.getStringExtra("EXTRA_BARCODE_DECODING_DATA")
val sb = StringBuilder()
sb.append("Type: $type, Barcode:$barcode\n")
Toast.makeText(context, sb.toString(), Toast.LENGTH_SHORT).show()
// Save mes, doesnt work
DocumentActivity().saveCell(barcode)
}}
您正在创建另一个 DocumentActivity 对象并将值保存在该对象的变量中,因此它不会反映在当前对象中。尝试使变量静态,然后从 broadcasteceiver 更新它。例如 DocumentActivity 中的变量是 barCodeVal 所以,
在文档活动中
companion object{
var barcodeVal = //some default value
}
然后从 broabcastreceiver
DocumentActivity.barcodeVal = barcode