Android Zxing二维码扫描码在片段中不起作用

Android Zxing二维码扫描码在片段中不起作用,android,kotlin,zxing,Android,Kotlin,Zxing,我正试图开发二维码扫描仪应用程序使用Zxing图书馆在科特林。我可以打开相机扫描二维码,但没有得到回应 我也尝试过实施,但没有得到帮助 class HomeFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflat

我正试图开发二维码扫描仪应用程序使用Zxing图书馆在科特林。我可以打开相机扫描二维码,但没有得到回应

我也尝试过实施,但没有得到帮助

class HomeFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_home, container, false)
    }
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        val mScanner = IntentIntegrator(activity)
        mScanner.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE)
        mScanner.setBeepEnabled(true)
        mScanner.initiateScan()

    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        if (result != null) {
            if (result.contents == null) {
                Toast.makeText(activity, "Cancelled", Toast.LENGTH_LONG).show()
            } else {
                Toast.makeText(activity, "Scanned: " + result.contents, Toast.LENGTH_LONG).show()
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
}

我想在toast中获得响应,但当我尝试使用调试器时,我无法转到onActivityResult(),相机很快关闭。

您的片段没有请求活动结果。当您使用活动实例化
IntentIntegrator(activity)
时,它将运行
activity.startActivityForResult(intent,REQUEST\u code)
。因此,您不会在片段中收到结果

如果您仍在使用
android.app.Fragment
,则只需确保使用您的片段来实例化
IntentIntegrator(this@HomeFragment)
。这样,您将在片段中获得结果,因为它将在内部运行
fragment.startActivityForResult(intent,REQUEST\u code)


如果您使用的是
androidx.fragment.app.fragment
,则可能需要将复制到您的应用程序中,并调整代码以使用androidx片段而不是框架类型。

问题是,扫描程序正在将信息发送到活动的onActivityResult方法,而不是片段方法。因此,可能的解决方案是,在片段中,将“this”作为上下文传递,而不是将活动作为上下文传递。就像你的碎片一样

 val mScanner = IntentIntegrator(this); // pass fragment context

在片段中,无论您在哪里初始化扫描仪,都将片段作为上下文传递,而不是将活动作为上下文传递。

当相机关闭和应用程序崩溃时,您是否可以共享您的logcat错误详细信息?我在
结果中得到空指针异常
@asadchoudhary哪一行?
val result=IntentIntegrator.parseActivityResult(requestCode、resultCode、data)
我添加了我的答案。请检查,应该可以。