Zxing 条形码:我在使用 androidx.fragment.app.Fragment 的片段中遇到类型不匹配错误
Xzing barcode : I'm getting type mismatch error in fragment using androidx.fragment.app.Fragment
我正在使用 Android studio 4.0,在 Kotlin 中编码,我在 Android 方面还是个新手 development.I 需要集成 Xzing 条形码库。我从 [https://tutorialwing.com/implement-android-qr-code-scanner-using-zxing-library-in-kotlin/][1] 的教程中复制了一些代码。本教程使用以下导入语句:
import android.app.Fragment
我修改了一个使用导航抽屉 Activity 模板生成的片段。它使用 androidx 片段导入语句:
import androidx.fragment.app.Fragment
在以下带有“this”引用的行中发生的错误:
qrScanIntegrator = IntentIntegrator.forFragment(this)
错误是:
Type mismatch: Required Fragment! found HomeFragment
不建议将旧版本的导入更改为旧版本,如果这样做,我会遇到很多其他错误。
如何让 zxing 与 androidx 片段一起工作?
谢谢
ZXing 库不再维护,特定的 class (IntentIntegrator
) 仅支持 android.app.Fragment
,这是 [=] 的已弃用 Android 框架版本49=]X Fragment
class.
这里有几个可能的选择:
分叉 ZXing 库,并更改 android.app.Fragment
导入以使用 androidx.fragment.app.Fragment
版本。
将 IntentIntegrator
调用委托给您的 Activity
,并将结果转发给您的 Fragment
。
只需将 IntentIntegrator
中的 Intent
initialization code 复制到您自己的助手 class。 IntentIntegrator
方法只是构建 Intent
和调用 startActivityForResult()
的便捷方法。您仍然可以使用 IntentIntegrator.parseActivityResult
方法来解释返回的结果。
我建议选择选项 #3。
作为长期替代方案,您可能还需要考虑研究 Firebase ML Kit,因为 ZXing 已不再维护。
我正在使用 Android studio 4.0,在 Kotlin 中编码,我在 Android 方面还是个新手 development.I 需要集成 Xzing 条形码库。我从 [https://tutorialwing.com/implement-android-qr-code-scanner-using-zxing-library-in-kotlin/][1] 的教程中复制了一些代码。本教程使用以下导入语句:
import android.app.Fragment
我修改了一个使用导航抽屉 Activity 模板生成的片段。它使用 androidx 片段导入语句:
import androidx.fragment.app.Fragment
在以下带有“this”引用的行中发生的错误:
qrScanIntegrator = IntentIntegrator.forFragment(this)
错误是:
Type mismatch: Required Fragment! found HomeFragment
不建议将旧版本的导入更改为旧版本,如果这样做,我会遇到很多其他错误。
如何让 zxing 与 androidx 片段一起工作? 谢谢
ZXing 库不再维护,特定的 class (IntentIntegrator
) 仅支持 android.app.Fragment
,这是 [=] 的已弃用 Android 框架版本49=]X Fragment
class.
这里有几个可能的选择:
分叉 ZXing 库,并更改
android.app.Fragment
导入以使用androidx.fragment.app.Fragment
版本。将
IntentIntegrator
调用委托给您的Activity
,并将结果转发给您的Fragment
。只需将
IntentIntegrator
中的Intent
initialization code 复制到您自己的助手 class。IntentIntegrator
方法只是构建Intent
和调用startActivityForResult()
的便捷方法。您仍然可以使用IntentIntegrator.parseActivityResult
方法来解释返回的结果。
我建议选择选项 #3。
作为长期替代方案,您可能还需要考虑研究 Firebase ML Kit,因为 ZXing 已不再维护。