重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关如何在kotlin中使用 Context,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联是一家专业提供绥棱企业网站建设,专注与成都网站制作、成都网站设计、H5场景定制、小程序制作等业务。10年已为绥棱众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
在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了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。