美文网首页
Android Toast小计(1022)

Android Toast小计(1022)

作者: Qin0821 | 来源:发表于2018-10-11 12:02 被阅读0次

    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()。

    相关文章

      网友评论

          本文标题:Android Toast小计(1022)

          本文链接:https://www.haomeiwen.com/subject/diqhvftx.html