这篇文章主要介绍了kotlin Context使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在activity级下使用this表示context
kotlin中取消了xxxActivity.this的用法,所以我们可以在activity下新建一个Context属性——instance指向它本身。然后在其他地方使用。如果使用的地方是在activity这一级则可以直接使用this指向它本身
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_share_temp)
share_imgbtn.setOnClickListener(this)
share_qq.setOnClickListener(this)
share_wechat.setOnClickListener(this)
share_sms.setOnClickListener(this)
}
在内部类里面是用外部类的实例对象表示context
如果是在内部类里面使用,则可以为activity写一个实例,然后在内部类里面使用
class ShareTempActivity : AppCompatActivity(), View.OnClickListener {
val instance by lazy { this } //这里使用了委托,表示只有使用到instance才会执行该段代码
val TAG:String = "ShareTempActivity"
override fun onClick(v: View?) {
//TODO("to do something") To change body of created functions use File | Settings | File Templates.
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_share_temp)
share_imgbtn.setOnClickListener(instance)
share_qq.setOnClickListener(instance)
share_wechat.setOnClickListener(instance)
share_sms.setOnClickListener(instance)
}
inner class MainShareBoardListener : ShareBoardlistener{
override fun onclick(p0: SnsPlatform?, p1: SHARE_MEDIA?) {
//TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
Log.i(TAG,p1.toString())
Toast.makeText(instance,"",Toast.LENGTH_SHORT).show()//传递实例
}
}
}
使用kotlin的标签语法从内部类使用外部类的实例表示context
还可以使用kotlin的标签,高级语法使用,在内部类里面或者当前activity的上下文
class ShareTempActivity : AppCompatActivity(), View.OnClickListener {
val instance by lazy { this }
val TAG:String = "ShareTempActivity"
override fun onClick(v: View?) {
//TODO("to do something") To change body of created functions use File | Settings | File Templates.
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_share_temp)
share_imgbtn.setOnClickListener(instance)
share_qq.setOnClickListener(instance)
share_wechat.setOnClickListener(instance)
share_sms.setOnClickListener(instance)
}
inner class MainShareBoardListener : ShareBoardlistener{
override fun onclick(p0: SnsPlatform?, p1: SHARE_MEDIA?) {
//TODO("not implemented")
Log.i(TAG,p1.toString())
Toast.makeText(this@ShareTempActivity,"",Toast.LENGTH_SHORT).show()//kotlin语法
}
}
}
补充知识:当你发现kotlin中viewmodel里无法获得context时
你可以继承 AndroidViewModel的方式来获得
以上这篇kotlin Context使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:kotlin Context使用详解
基础教程推荐
猜你喜欢
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- iOS开发 全机型适配解决方法 2023-01-14
- Android开发Compose集成高德地图实例 2023-06-15
- Flutter进阶之实现动画效果(三) 2022-10-28
- IOS获取系统相册中照片的示例代码 2023-01-03
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- Android实现短信验证码输入框 2023-04-29
- iOS开发使用XML解析网络数据 2022-11-12
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18