改圖來源: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]即可