取消前一个时的Android吐司不显示

问题描述 投票:0回答:1

我有一个ToastUtil单,显示敬酒,并取消先前的敬酒,如果在屏幕上已经显示。这里是我当前的代码:

object ToastUtil {

    private lateinit var mToast: Toast

    fun init(applicationContext: Context) {
        mToast = Toast.makeText(applicationContext, null, Toast.LENGTH_SHORT)
    }

    fun showShortToast(message: String) {
        mToast.cancel()
        mToast.setText(message)
        mToast.duration = Toast.LENGTH_SHORT
        mToast.show()
    }

    fun showShortToast(messageId: Int) {
        mToast.cancel()
        mToast.setText(messageId)
        mToast.duration = Toast.LENGTH_SHORT
        mToast.show()
    }
}

但敬酒的邮件未显示在手机上。该ToastUtil肯定已经被初始化(init(applicationContext)在我的自定义App实现:

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        ToastUtil.init(this)
    }
}

我曾尝试与https://stackoverflow.com/a/33878500/8434188无济于事。有什么我失踪?

android android-context toast applicationcontext android-toast
1个回答
0
投票

此代码现在工作和祝酒词都出现了。这在某种程度上也更清洁,因为我没有在我的应用程序执行进行初始化。

object ToastUtil {

    private var mToast: Toast? = null

    fun Context.showShortToast(message: String) {
        if (mToast != null) {
            mToast!!.cancel()
        }
        mToast = Toast.makeText(this, message, Toast.LENGTH_SHORT)
        mToast?.show()
    }

    fun Context.showShortToast(
        messageId: Int,
        vararg strings: String = arrayOf()
    ) {
        this.showShortToast(getString(messageId, strings))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.