마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Toast 중복으로 뜨지 않게 하는 방법 질문.(지속시간)

0 추천
안녕하세요, 안드로이드 초보 개발자입니다.

 

특정버튼이 눌렸을경우 Toast로 팝업을 뛰워주고 있습니다.

Toast.makeToast(getBaseContext(), " message ", Toast.LENGTH_SHORT).show();

 

근데 해당 버튼을 연속으로 계속 누르면 Toast팝업의 show가 연속적으로 수행되어서..

(하나가 뜨고 LENGTH_SHORT만큼 지속되고 사라지면 다음 Toast가 뜨는..)

버튼을 누른 횟수만큼 너무 오래지속되는모습을 보입니다... ㅠ

 

즉 마지막에 눌른 버튼을 기준으로 LENGTH_SHORT만큼만 뛰우고 사라지게 하고 싶은데요..

 

어떻게 하면 될까요??

 

조언 부탁드립니다.
블랙이요블랙 (12,860 포인트) 님이 2013년 6월 11일 질문

4개의 답변

+1 추천

안드로메다개발자 님 방법이 제일 쉽고 문제도 없고 cpu부하도 없어요.

객체를 매번 만들지 말고 toast객체 하나만 만들어서 settext로 텍스트변경하고 show불러주면 되요.

그러면 텍스트도 계속 바뀌고 유지시간도 마지막 토스트 show했던 시간만 띄우고 사라져요.

 

 

ignitepaper (1,720 포인트) 님이 2013년 6월 11일 답변
0 추천
안타깝게도 토스트 메세지는 제어하기가 쉽지 않죠..

그나마 갤럭시 최근 제품 (언제부터였는지는 모르겠지만 S3 는 적용되어있네요) 은 마지막 토스트의 시간만큼만 뜨고있어요

이렇게 시스템단에서 지원을 하지 않는다면 어려울것으로 보입니다. 3년전 이맘때쯤 고민했던 내용이네요..
블랙넥원 (9,600 포인트) 님이 2013년 6월 11일 답변
0 추천
저는 이렇게 했는데요.. 맞는 방법인지는 잘모르겠습니다만.. 지금은 toast 메세지가 한번만 뜨네요..

Toast 자체를 전역변수로 지정해주시구요..

toast == null 이면 토스트를 실행해주시구요..

toast != null 이면

예를 들어 private Toast mToast; 이렇게 지정했다고 하면..

mToast.setText("토스트는 사용중입니다."); 이런식으로 구분했습니다.

저도 그 문제 때문에 고민많이했는데. 이 방법으로 하니까 toast 메세지가 중복 출력되지는 않습니다.

도움이 되셨으면 좋겠네요..
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 11일 답변
0 추천
토스트 객체를 전역으로 놓고

null아닐시에 toast.cancel 하고

다시 showmessage로 띄어주면되요.
chemkaaa (6,030 포인트) 님이 2013년 6월 11일 답변
...