[Android] Toast 중복 현상 해결

Published on 2017 Feb 10 12:10:33
Last Updated on 2017 Feb 27 14:11:37

발생한 상황

해결 방법

변경한 코드는 클래스에 mToast라는 Toast 객체를 만들어주고, makeText와 show를 분리했다. 그리고 이미 떠있는 토스트가 있는 경우 cancel을 해주도록 처리했다.

public static Toast mToast;
...
...
public void shortMessage(final String message) {
    Runnable r = new Runnable() {
        @Override
        public void run() {
            Toast.makeText(act, message, Toast.LENGTH_SHORT).show();
            if(mToast != null) mToast.cancel();
                mToast = Toast.makeText(act, message, Toast.LENGTH_SHORT);
                mToast.show();
            }
        };
        runOnMainThread(r);
    }
}

변경해주고 나서 확인해보니, 의도한대로 동작하는 것을 확인했다 :)

참고 사이트 : http://stackoverflow.com/questions/12922516/how-to-prevent-multiple-toast-overlaps

http://stackoverflow.com/questions/10070108/can-i-cancel-previous-toast-when-i-want-to-show-an-other-toast