android经常通过toast展示小提示,
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
作为一个懒癌晚期程序员,是无法接受这么长的调用语句的。
通过Kotlin
的扩展方法
fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
try {
Toast.makeText(this, message, length).show()
} catch (e: Exception) {
Looper.prepare()
Toast.makeText(this, message, length).show()
Looper.loop()
}
}
fun Activity.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
this.runOnUiThread {
Toast.makeText(this, message, length).show()
}
}
我们在Activity可以直接调用toast
ex:
toast("一骑红尘妃子笑")
查看Toast
源码可知Toast.LENGTH_LONG
的值为1,Toast.LENGTH_SHORT
的值为0,于是在需要长时间显示的toast情景,我们加个参数即可
toast("一骑红尘妃子笑", 1)
注意:
- 在非ui线程中弹toast有时会造成toast不显示;
- 如果在一个线程中没有调用Looper.prepare(),就不能在该线程中创建Toast。
解决方案:
- 使用Handler或者runOnUiThread()或者AsyncTask;
- 对toast try catch,在异常处理中加上Looper.prepare()和Looper.loop()。
网友评论