Android开发基础简化Toast调用方法详解
作者:ObliviateOnline 时间:2022-02-11 00:44:09
前言
有时候我们开发时会发现有些方法调用非常多,但它的默认的调用方法却要传很多参数进去而且还得记得调用具体的写法,比如Toast,不止要调用makeText()方法还得在makeText()方法后加上show():
Toast.makeText(context, "A", Toast.LENGTH_LONG).show()
有时候就会因为忘记调show()方法而不显示,结果导致很多奇怪的Bug,所以对其的简化还是很有必要的。
实现方法
那么我们怎么对Toast方法简化呢?
新建一个Toast.kt文件
import android.content.Context
import android.widget.Toast
//工具方法
//添加扩展函数
//简化Toast调用方法
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类各写一个扩展方法,然后我们在扩展方法中调用Toast方法,将其中的第二个参数(弹出的内容)换成this参数,就能更简单的使用Toast方法了:
字符串调用
"start ActivityPlayVideo".showToast(applicationContext)
定义在string.xml的字符串资源调用:
R.string.app_name.showToast(applicationContext)
但我们仍需要优化该工具方法,因为此时我们是写死了弹出时长的,不过Kotlin中有对函数设置参数默认值的功能:
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()
}
这样写好后,我们就在不需要设置弹出时间时不去输入第二个参数,默认时间,而在有弹出时长需求时改变第二个参数duration来设置时长:
//默认弹出时长
"start ActivityPlayVideo".showToast(applicationContext)
//手动设置弹出时长
R.string.app_name.showToast(applicationContext, 500)
最终,我们就简化好了Toast,后续在App中调用它也更加方便好用,当然,其实最好还加上对子线程的支持,因为子线程对UI不能直接操作。
来源:https://juejin.cn/post/7196636673692975162
标签:Android,Toast,调用简化
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
浅谈java异常链与异常丢失
2023-10-24 21:53:38
详解Java的文件与目录管理以及输入输出相关操作
2022-05-03 15:07:22
![](https://img.aspxhome.com/file/2023/0/101750_0s.jpg)
Java基于HttpClient实现RPC的示例
2023-10-29 15:55:02
java实现zip,gzip,7z,zlib格式的压缩打包
2023-08-13 08:56:59
详解java中的static关键字
2023-09-24 01:44:12
Android APP存活检测方式
2023-10-14 10:02:41
详解Xamarin.Android 利用Fragment实现底部菜单
2021-07-06 23:41:18
![](https://img.aspxhome.com/file/2023/4/138114_0s.jpg)
java可以作为第一门编程语言学习吗
2021-05-25 07:52:37
Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)
2023-10-31 23:08:55
![](https://img.aspxhome.com/file/2023/3/137293_0s.png)
怎样使用PowerMockito 测试静态方法
2022-06-18 08:28:59
![](https://img.aspxhome.com/file/2023/7/86777_0s.jpg)
C#实现提取Word中插入的多媒体文件(视频,音频)
2022-09-06 14:45:20
![](https://img.aspxhome.com/file/2023/0/119520_0s.png)
SpringBoot集成gRPC微服务工程搭建实践的方法
2022-03-11 22:10:39
WinForm项目中添加帮助文档功能
2022-12-30 02:22:50
![](https://img.aspxhome.com/file/2023/1/119541_0s.png)
详解Spring-Boot集成Spring session并存入redis
2021-10-13 07:48:30
![](https://img.aspxhome.com/file/2023/8/115888_0s.jpg)
Android studio 运行main 函数的方法
2023-09-14 15:57:38
![](https://img.aspxhome.com/file/2023/5/89535_0s.png)
c# 使用模式匹配以及 is 和 as 运算符安全地进行强制转换
2022-11-23 09:47:51
Java设计模式之桥接模式
2021-08-31 05:56:02
Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
2023-09-12 14:04:06
Java并发编程之线程安全性
2021-12-22 07:43:41
C#获取本地IP的四种方式示例详解
2023-04-16 00:52:50