首页 > 解决方案 > 如何从片段中的活动从 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()
                    }
                }
            }
        }
    }

}

标签: androidkotlinandroid-fragments

解决方案


推荐阅读