Toastの終了を検出する

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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