0

我正在尝试调用startActivityForResult()并在onActivityResult(). 我还实现onMapReady()了回调,它正在初始化活动的变量和状态并进行一些处理。问题是我无法访问将用于 中的某些处理的变量(获取 nullpointerexception)onActivityResult(),因为在完成onActivityResult()之前调用了onMapReady()(它是异步的)。onMapReady()我想知道如何在访问之前等待完成onActivityResult()

我已经研究过这个解决方案,但我无法onActivityResult()手动调用。 如何在 Android 生命周期阶段暂停,直到调用回调?

无论如何我可以挂钩生命周期事件并在 onMapReady() 之后启动 onActivityResult() 吗?

4

1 回答 1

1

为什么不使用全局变量?

例如看这个:

var isMapReady = false
var onActivityResultCalled = false
fun doProcesses(){
    
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (isMapReady.not()) {
        onActivityResultCalled = true
    } else {
        doProcesses()
        onActivityResultCalled = false
    }
    
}

@Override
public void onMapReady(GoogleMap googleMap) {
    isMapReady = true
    if (onActivityResultCalled) doProcesses()
}
于 2021-02-14T19:09:04.840 回答