Android 如何根据相同活动的片段启用NFC读取器

Android 如何根据相同活动的片段启用NFC读取器,android,android-activity,fragment,nfc,Android,Android Activity,Fragment,Nfc,我有两个不同片段(A,B)的Activity1。如何在片段B可见时禁用NFC标记读取器,并在片段A可见时启用它 当通过调用enableForegroundDispatchinsideActivity1.onAttachFragments()附加B时,我认为在活动上使用enableForegroundDispatch()和disableforgrounddispatch()和disableForegroundDispatch内部活动1.在返回时但我想不会起作用,因为活动始终在前台可见,然后它将始终

我有两个不同片段(A,B)的Activity1。如何在片段B可见时禁用NFC标记读取器,并在片段A可见时启用它


当通过调用
enableForegroundDispatch
inside
Activity1.onAttachFragments()附加B时,我认为在活动上使用
enableForegroundDispatch()
disableforgrounddispatch()
disableForegroundDispatch
内部
活动1.在返回时
但我想不会起作用,因为活动始终在前台可见,然后它将始终收到标记意图…

由于没有人回答这个问题,我将分享我自己的解决方案,它似乎对我有效,即使代码一点也不“优雅”。首先,我在MainActivity中添加了一个简单的布尔值
isnfcacive
,并在ReaderFragment中对其进行了更改,如下所示:

override fun onResume() {
    super.onResume()
    val activity = activity as MainActivity
    activity.isNfcActive = true
}
override fun onDestroy() {
    super.onDestroy()
    val activity = activity as MainActivity
    activity.isNfcActive = false
}
现在每次我从NFC卡上得到一个新的意图,我都会检查阅读是否处于活动状态。这样,除读卡器手机外的每个片段都会振动,但只有在您想要的片段中,才会处理此意图:

override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        if (intent != null && isNfcActive) {
            processIntent(intent)
        }
    }

由于没有人回答这个问题,我将分享我自己的解决方案,这似乎对我很有效,即使代码一点也不“优雅”。首先,我在MainActivity中添加了一个简单的布尔值
isnfcacive
,并在ReaderFragment中对其进行了更改,如下所示:

override fun onResume() {
    super.onResume()
    val activity = activity as MainActivity
    activity.isNfcActive = true
}
override fun onDestroy() {
    super.onDestroy()
    val activity = activity as MainActivity
    activity.isNfcActive = false
}
现在每次我从NFC卡上得到一个新的意图,我都会检查阅读是否处于活动状态。这样,除读卡器手机外的每个片段都会振动,但只有在您想要的片段中,才会处理此意图:

override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        if (intent != null && isNfcActive) {
            processIntent(intent)
        }
    }

你找到解决办法了吗?我也面临同样的问题。你找到解决办法了吗?我也面临同样的问题。