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

toast 시간연장 문의드립니다..

0 추천

안녕하세요.

완전초보개발자입니다.

아래와 같이 토스트를 사용하여 메시지를 노출시키고 있는데

최대시간이 4초밖에 되지 않는데 그 시간을 연장할 수 있는

방법이 있으면 부디 알려주시면  합니다.

책을 찾고 헤메어도 능력밖의 사안이라 부득이 도움을 청하게

되었습니다. 부디 도와주시면 감사하겟습니다.

import com.think_edu_06.*;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class H036_ThinkEdu extends Activity {
 Activity act = this;

  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.h036_thinkedu);
    
    
     findViewById(R.id.btn01).setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    Toast.makeText(act.getBaseContext(), "02'법무",
      Toast.LENGTH_LONG).show();
   }
  });

댄디프롭 (220 포인트) 님이 2013년 4월 20일 질문

5개의 답변

+3 추천
Toast 2번 한번에 날리면 스택에 들어가므로 2번 연달아(8초) 나옵니다.
익명사용자 님이 2013년 4월 21일 답변
답변감사합니다..근데 정말 염치없지만 토스트2번을 날리는 방법을 모르겠습니다.  위 소스에 어떠한 방식으로 하는지 알려주실수 있는지요?
간단하게 생각해 보세요.. ^^;;
Toast.makeText(act.getBaseContext(), "02'법무", Toast.LENGTH_LONG).show();
Toast.makeText(act.getBaseContext(), "02'법무", Toast.LENGTH_LONG).show();
나름대로는 오랫동안 고민했던 부분이었는데 정말 속 시원히 해결되었습니다..익명사용자님께 진심으로 감사드립니다. 답변주신 다른 분들께도 감사드립니다^^
+3 추천

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

long delay; //실제 Toast가 보여지는 시간
//r.duration = 입력된 duration 값

if(r.duration == Toast.LENGTH_LONG) delay = LONG_DELAY
else delay = SHORT_DELAY;

안드로이드 소스보시면 위의 소스와 비슷하게 되어있습니다.

강제로 시간을 늘려봤자 Toast.LENGTH_LONG이 아니면 무조건 2초로 바뀝니다.

참고하세요

q1212 (26,020 포인트) 님이 2013년 4월 22일 답변
+1 추천
토스트 객체를 저장해 놓은 후 띄웠다가 사라질 때 쯤에 다시 show() 를 호출하면 됩니다.

참고로 duration 매개변수에 LENGTH_LONG, LENGTH_SHORT 외의 다른 값을 넣으면 어떻게 동작할 지 알 수 없습니다.
익명사용자 님이 2013년 4월 21일 답변
–1 추천

LENGTH_LONG 대신에 직접 시간 지정 할 수 있는걸로 아는데요 ㅎㅎ

 

Toast.makeText(Context context, CharSequence text, int duration)
 
어울려사는세상 (200 포인트) 님이 2013년 4월 20일 답변
–6 추천

Toast.makeText(act.getBaseContext(), "02'법무",  10000).show();

그냥 표시될 숫자만 넣어서 표시하면됩니다 

위의 예는 10초동안 표시하는거고 30초라면 300000가 되겠죠...

2번연속 사용하는것도 나쁘지않지만 그럴경우 일단 한번 사라지는게 표시되니 

그다지 좋은방법이라고 할수없습니다 

 

그냥 1번 실행해서 표시시간을 왕창늘려버리면 됩죠

쿨러 (2,790 포인트) 님이 2013년 4월 22일 답변
문제가 없을까요? 문서에는 아래와 같이 설명되어있어 시도해보지 않았는데.. 그래도 된다면 더 좋은 방법이겠네요.. ^^;;
* duration : How long to display the message. Either LENGTH_SHORT or LENGTH_LONG
제경우는 LONG말고 그냥 숫자 넣어서 쓸때가 많았는데 따로 에러는 없었습니다
쿨러님 답변 감사드립니다. 저의 경우는 소스에 뭔가 체계?가 달라서인지 적용되지 않아 아쉬웠습니다. 다음에도 도와주시면 감사하겠습니다.
...