網(wǎng)站首頁 編程語言 正文
前言
有時候我們開發(fā)時會發(fā)現(xiàn)有些方法調(diào)用非常多,但它的默認的調(diào)用方法卻要傳很多參數(shù)進去而且還得記得調(diào)用具體的寫法,比如Toast,不止要調(diào)用makeText()方法還得在makeText()方法后加上show():
Toast.makeText(context, "A", Toast.LENGTH_LONG).show()
有時候就會因為忘記調(diào)show()方法而不顯示,結(jié)果導致很多奇怪的Bug,所以對其的簡化還是很有必要的。
實現(xiàn)方法
那么我們怎么對Toast方法簡化呢?
新建一個Toast.kt文件
import android.content.Context
import android.widget.Toast
//工具方法
//添加擴展函數(shù)
//簡化Toast調(diào)用方法
fun String.showToast(context : Context) {
Toast.makeText(context, this, Toast.LENGTH_LONG).show()
}
fun Int.showToast(context : Context) {
Toast.makeText(context, this, Toast.LENGTH_LONG).show()
}
然后去除默認加上的class類,并為String和Int類各寫一個擴展方法,然后我們在擴展方法中調(diào)用Toast方法,將其中的第二個參數(shù)(彈出的內(nèi)容)換成this參數(shù),就能更簡單的使用Toast方法了:
字符串調(diào)用
"start ActivityPlayVideo".showToast(applicationContext)
定義在string.xml的字符串資源調(diào)用:
R.string.app_name.showToast(applicationContext)
但我們?nèi)孕枰獌?yōu)化該工具方法,因為此時我們是寫死了彈出時長的,不過Kotlin中有對函數(shù)設置參數(shù)默認值的功能:
fun String.showToast(context : Context, duration: Int = Toast.LENGTH_LONG) {
Toast.makeText(context, this, duration).show()
}
fun Int.showToast(context : Context, duration: Int = Toast.LENGTH_LONG) {
Toast.makeText(context, this, duration).show()
}
這樣寫好后,我們就在不需要設置彈出時間時不去輸入第二個參數(shù),默認時間,而在有彈出時長需求時改變第二個參數(shù)duration來設置時長:
//默認彈出時長
"start ActivityPlayVideo".showToast(applicationContext)
//手動設置彈出時長
R.string.app_name.showToast(applicationContext, 500)
最終,我們就簡化好了Toast,后續(xù)在App中調(diào)用它也更加方便好用,當然,其實最好還加上對子線程的支持,因為子線程對UI不能直接操作。
總結(jié)
雖然方法很簡單,但在項目開發(fā)中的確蠻有作用的,簡化了編寫代碼的過程。
原文鏈接:https://juejin.cn/post/7196636673692975162
相關(guān)推薦
- 2022-10-23 python操作SqlServer獲取特定表的所有列名(推薦)_python
- 2023-05-23 深入了解React中的合成事件_React
- 2022-04-05 Python+Opencv答題卡識別用例詳解_python
- 2022-06-06 web前端實現(xiàn)水平垂直居中、position、relative、absolute、transform
- 2022-10-29 線性回歸(基于python的理論與實現(xiàn))的RuntimeWaring溢出問題
- 2022-08-17 C語言進階練習二叉樹的遞歸遍歷_C 語言
- 2022-07-19 react組件通訊的三種方式props:父組件和子組件互相通訊、兄弟組件通訊
- 2022-08-10 .Net使用Cancellation?Framework取消并行任務_實用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支