天天看點

Kotlin中擷取context

Kotlin中擷取context

改圖來源:https://blog.csdn.net/zhanqq2012/article/details/106269491?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.control&spm=1001.2101.3001.4242

直接說方法:

一、建立MyApplication類

class MyApplication : Application() {
    //靜态變量
    companion object {
        lateinit var context: Context
    }
    override fun onCreate() {
        super.onCreate()
        context = baseContext
    }
}
           

然後在AndroidManifest中添加一行代碼注冊一下,應用初始化,否則無法擷取MyApplication.context

<application
        android:name=".MyApplication"
</application>
           

在應用時,直接寫MyApplication.context即可擷取

二、由上圖可知,在建立Dialog時無法使用MyApplication擷取context

若使用會出現以下報錯:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
           

建立Dialog時必須使用Activity添加這個窗體

我在應用時出現了報錯,後來發現java中是使用Activity.this擷取,

但是kotlin中取消了這個方法,

改用[email protected]擷取到我們所需的這個Activity,

在擷取context時:[email protected]即可