Android开发基础简化Toast调用方法详解
ObliviateOnline 人气:0前言
有时候我们开发时会发现有些方法调用非常多,但它的默认的调用方法却要传很多参数进去而且还得记得调用具体的写法,比如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不能直接操作。
总结
虽然方法很简单,但在项目开发中的确蛮有作用的,简化了编写代码的过程。
加载全部内容