时间:2021-05-19
在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使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android中Context的使用方法详解概要:Context字面意思是上下文,位于frameworkpackage的android.content.Cont
Kotlin语言中调用JavaScript方法实例详解Kotlin已被设计为能够与Java平台轻松互操作。它将Java类视为Kotlin类,并且Java也将Ko
本文介绍了Kotlin+Retrofit+RxJava简单封装使用详解,分享给大家,具体如下:实例化RetrofitobjectRetrofitUtil{val
Kotlin开发Android应用实例详解相关文章:关于Kotlin语言的基础介绍:我们简单的知道了Kotlin这门新语言的优势,也接触了一些常见的语法及其简单
Android全局获取Context实例详解在弹出Toast启动活动发送广播操作数据库使用通知等等时都需要Context如果操作在活动中进行是很简单的,因为活动