在函数中给它一个值后,值变为空

Value becomes null after giving it a value in a function

我正在尝试创建一个扫描仪 SDK,但遇到了一个问题,我在一个函数中创建了一个 class 变量值,该函数在 Kotlin 中覆盖了另一个 class。

我已经尝试了 Kotlin 中的非空断言运算符和安全调用运算符。我已经用println方法测试了各个区域的代码,证明确实如此。

我也试过删除 'private' 修饰符。

请注意,我更改了一些不相关的名称(更改很明显)。

class XYZ : Activity , xyz.abc, def.hjk{

   private var barcodeReader: BarcodeReader? = null

   private var manager: AidcManager? = null

   override fun onCreate()...
   ...
   create(this,
            object: AidcManager.CreatedCallback {
                override fun onCreated(aidcManager: AidcManager?) {
                    manager = aidcManager
                    barcodeReader = manager?.createBarcodeReader()
                    if (manager != null){
                        println("work1")
                        //manager is not null here
                    }
                }

            })

        if (manager != null){
            //manager is null here
            println("work2")
        }

我希望 managerbarcodeReader 不会 null

此时值可以为空的原因是因为您异步初始化它。您无法保证 AidcManager.CreatedCallback 会在第二个 if.

之前执行
---`onCreate`---`createAidc`---`secondIf`---------------`call callback here`
                        \                                /
                         ------ some async work here---          

另请参阅首先打印的内容 - work2work1。 所以,这是完全正常和意料之中的。