Toastの終了を検出する

  • 12
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Toastが終了してから何かしたい、ってことがあるとします。Toastにはイベントリスナは付けられないのでToastが持つviewの onDetachedWindow()をオーバーライドして代用できます。

final Toast toast = Toast.makeText(context, "hoge", Toast.LENGTH_SHORT);
new FrameLayout(this) {
    {
        addView(toast.getView()); // toastのviewをframelayoutでくるむ
        toast.setView(this); // framelayoutを新しくtoastに設定する
    }
    @Override
    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        // Toastが終了したあとの処理をする
    }
};
toast.show();

検索用キーワード: Toast, onDismiss

検証用コード: https://github.com/gfx/android-ToastOnDismiss/blob/master/ToastOnDismiss/src/main/java/com/example/toastondismiss/MainActivity.java