kotlin Context使用详解

 更新时间:2020年03月26日 11:51:30   作者:damnivictory   我要评论
这篇文章主要介绍了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使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Android中AsyncTask机制

    详解Android中AsyncTask机制

    在Android当中,提供了两种方式来解决线程直接的通信问题,一种是通过Handler的机制,还有一种就是今天要详细讲解的 AsyncTask 机制,对android中asynctask相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • Android仿淘宝首页头条View垂直滚动效果

    Android仿淘宝首页头条View垂直滚动效果

    这篇文章主要为大家详细介绍了Android仿淘宝首页头条View垂直滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android之TextView自适应大小

    Android之TextView自适应大小

    对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成UI的不美观。现在就让我们学习自适应大小的TextView控件。下面跟着小编一起来看下吧
    2017-03-03
  • Android用户注册界面

    Android用户注册界面

    这篇文章主要介绍了Android用户注册界面 的相关资料,需要的朋友可以参考下
    2016-03-03
  • Android截取视频帧并转化为Bitmap示例

    Android截取视频帧并转化为Bitmap示例

    利用MediaMetadataRetriever按照时间截取视频并转换为Bitmap存放于SDCard,具体实现如下,感兴趣的朋友可以参考下哈
    2013-06-06
  • Android Rreact Native 常见错误总结

    Android Rreact Native 常见错误总结

    这篇文章主要介绍了Android Rreact Native 常见错误总结的相关资料,需要的朋友可以参考下
    2017-06-06
  • 使用User Agent分辨出Android设备类型的安全做法

    使用User Agent分辨出Android设备类型的安全做法

    这篇文章主要介绍了使用User Agent分辨出Android设备类型的安全做法,本文得出的结论是当你依据检测UA来判断Android手机设备,请同时检查android和mobile两个字符串,需要的朋友可以参考下
    2015-01-01
  • Android编程实现应用自动更新、下载、安装的方法

    Android编程实现应用自动更新、下载、安装的方法

    这篇文章主要介绍了Android编程实现应用自动更新、下载、安装的方法,涉及Android针对应用程序包的读取,属性判断与更新操作的相关技巧,需要的朋友可以参考下
    2016-02-02
  • 当Flutter遇到节流与防抖的思路和流程优化

    当Flutter遇到节流与防抖的思路和流程优化

    这篇文章主要给大家介绍了关于当Flutter遇到节流与防抖的思路和流程优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Android 自定义View实现芝麻分曲线图效果

    Android 自定义View实现芝麻分曲线图效果

    这篇文章主要介绍了Android 自定义View实现芝麻分曲线图效果的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11

最新评论