状況
kotlinのネイティブアプリ開発時に、エラーがあった場合にトーストを出すという処理を書いていたのですが、トーストが固まってしまい、次の画面に遷移してもトーストが消えないという現象に陥りました。
原因
前のトーストが完全に消えていない状態で次のトーストが呼ばれたことで、トースト詰まりが起こってしまったようです。
解決方法
こんな便利なものがありました。
toast.cancel()
↑を追加したトーストの表示処理
MainActivity.kt
private var toast: Toast? = null
fun showToast() {
toast?.cancel() // toastを表示する前に、既に表示されているtoastを消す
val appContext = getContext()
toast = Toast.makeText(
appContext,
R.string.toast_message,
Toast.LENGTH_SHORT
)
toast?.show()
}