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)
}
在內(nèi)部類里面是用外部類的實(shí)例對象表示context
如果是在內(nèi)部類里面使用,則可以為activity寫一個實(shí)例,然后在內(nèi)部類里面使用
class ShareTempActivity : AppCompatActivity(), View.OnClickListener {
val instance by lazy { this } //這里使用了委托,表示只有使用到instance才會執(zhí)行該段代碼
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()//傳遞實(shí)例
}
}
}
使用kotlin的標(biāo)簽語法從內(nèi)部類使用外部類的實(shí)例表示context
還可以使用kotlin的標(biāo)簽,高級語法使用,在內(nèi)部類里面或者當(dāng)前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語法
}
}
}
補(bǔ)充知識:當(dāng)你發(fā)現(xiàn)kotlin中viewmodel里無法獲得context時
你可以繼承 AndroidViewModel的方式來獲得


以上這篇kotlin Context使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android HttpURLConnection.getResponseCode()錯誤解決方法
在使用HttpURLConnection.getResponseCode()的時候直接報錯是IOException錯誤,一直想不明白,同一個程序我調(diào)用了兩次,結(jié)果有一個鏈接一直O(jiān)K,另一個卻一直報這個錯誤2013-06-06
Android獲取當(dāng)前位置的經(jīng)緯度數(shù)據(jù)
這篇文章主要介紹了Android獲取當(dāng)前位置的經(jīng)緯度數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android獲取點(diǎn)擊屏幕的位置坐標(biāo)
這篇文章主要為大家詳細(xì)介紹了Android獲取點(diǎn)擊屏幕的位置坐標(biāo),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
利用SurfaceView實(shí)現(xiàn)下雨與下雪動畫效果詳解(Kotlin語法)
這篇文章主要給大家介紹了關(guān)于利用SurfaceView實(shí)現(xiàn)下雨與下雪動畫效果的相關(guān)資料,需要一些基本的View知識和會一些基礎(chǔ)Kotlin語法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
Android開發(fā)之機(jī)頂盒上gridview和ScrollView的使用詳解
這篇文章主要介紹了Android開發(fā)之機(jī)頂盒上gridview和ScrollView的使用詳解的相關(guān)資料,需要的朋友可以參考下2016-02-02

