在函数中给值赋值后,该值变为空

时间:2019-08-08 05:55:31

标签: android kotlin null android-context

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

我在Kotlin中尝试了非空断言运算符和安全调用运算符。我已经使用println方法测试了代码的各个方面,以证明确实是这种情况。

我还尝试过删除“私人”修饰符。

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

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

1 个答案:

答案 0 :(得分:2)

此时该值可以为null的原因是因为您以异步方式对其进行了初始化。您无法保证AidcManager.CreatedCallback将在第二个if之前执行。

---`onCreate`---`createAidc`---`secondIf`---------------`call callback here`
                        \                                /
                         ------ some async work here---          

另请参阅先打印的内容-work2work1。 因此,这是完全正常和预期的。