kotlin Context使用详解
作者:damnivictory 时间:2021-09-12 02:54:29
在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的方式来获得
来源:https://blog.csdn.net/damnivictory/article/details/73850555
标签:kotlin,Context
0
投稿
猜你喜欢
Springboot+Netty+Websocket实现消息推送实例
2022-03-24 09:29:29
java LRU(Least Recently Used )详解及实例代码
2022-10-08 10:42:43
Java线程的全方位详解
2023-04-11 14:02:55
老生常谈反射之Class类的使用(必看篇)
2022-07-20 16:32:30
C#窗体传值代码方法
2022-12-03 22:57:37
java struts2学习笔记之线程安全
2022-08-07 00:13:07
spring Boot打包部署到远程服务器的tomcat中
2023-01-14 21:45:28
Android BottomSheet效果的两种实现方式
2022-10-14 02:26:23
Java线程池submit阻塞获取结果的实现原理详解
2021-08-29 03:55:45
Unity实现俄罗斯方块
2021-05-28 13:37:08
使用Maven配置Spring的方法步骤
2023-02-05 18:37:46
Java中String的JdbcTemplate连接SQLServer数据库的方法
2022-09-05 00:34:12
Java使用JavaMail API发送和接收邮件的代码示例
2022-09-02 01:15:51
Java通过What、Why、How了解弱引用
2021-11-01 00:06:20
Java方法参数传递机制原理解析
2022-04-16 19:10:46
C++/java 继承类的多态详解及实例代码
2022-11-28 10:22:06
深入Unix时间戳与C# DateTime时间类型互换的详解
2023-06-04 21:48:11
Java实战员工绩效管理系统的实现流程
2021-11-20 19:04:28
Android kotlin使用注解实现防按钮连点功能的示例
2023-07-02 11:58:06
java web学习_浅谈request对象中get和post的差异
2022-10-28 00:25:20