【发布时间】:2020-03-14 13:01:49
【问题描述】:
如何保存来自 BroadcastReceiver 的字符串消息并在 Activity 中使用保存的变量?我只找到 Toast.makeText 示例。 我实际拥有的是:正在工作的、已注册的 BroadcastReceiver。我的应用程序在 DocumentActivity 中运行,当我点击我的 DataCollectionTerminal 上的扫描按钮(Android 7.0 上的 DTC)时,DTC 接收消息并为其吐司。我可以在打开的 EditText 中捕获来自 DTC 的消息并将其保存在单击保存按钮上。
但我需要的是:按下扫描按钮 => DTC 获取条形码消息 => 发送到 Activity 并将其保存到某个变量 => 我可以在整个 Activity 中使用这个 var.value,设置它 TextView,写它到txt文档等。
文档活动
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)
}}
【问题讨论】:
标签: android android-activity broadcastreceiver