2012-04-24 2 views
0

나는 showText() 메서드에서 건배를했습니다. 이 메서드는 호출 할 때 토스트를 보여줍니다. 두 번째 활동에는 버튼이 있고 단추를 클릭하면 내 토스트가 보여줘야합니다. 모든 것은 훌륭하게 작동하지만 두 번이나 클릭 할 때 내 토스트에 오랜 시간이 걸릴 것입니다. 나는 버튼을 클릭 할 때만 토스트 쇼를하고 싶습니다. 다시 클릭하면, 먼저 토스트가 사라지고 다시 표시됩니다.안드로이드와 토스트 중

public void showText(String msg) { 

     Toast.makeText(this, msg, 1000).show(); 

} 

어떻게하면됩니까? 대신 쇼()를 호출

답변

3

, 당신은이 일 때 당신이 단지

Toast toast = Toast.makeText(this, msg, 1000); 
then toast.show(); 
and then later, call some methods on the toast like toast.cancel(); 

http://developer.android.com/reference/android/widget/Toast.html

+0

을 수행 할 수 있습니다를 만든 토스트에 대한 참조를 유지할 수 있습니다 첫 번째 활동에서이 토스트와이 방법을 사용하고 있으며 그 솔루션을 두 번째로 사용하고 싶습니다. – edi233

+0

@ edi233 그렇게해야합니다. 하지만 Toast.cancel()은 어떤 경우에는 버그가있는 것처럼 보이며 아무 것도하지 않습니다. cancel()을 사용할 수 없다면 다른 솔루션 (예 : 사용자 정의 '토스트')으로 전환해야 할 수도 있습니다. 편집 :이 귀하의 의견에 회신에 주석이 아닙니다. – Joe

1

당신이 이런 식으로

class YourActivity extends Activity implements OnclickListener 
{ 

Toast toast = null; 

void onclick(View v) 
{ 
//call showText() method 
} 

// modify your showText as follows 
public void showText(String msg) { 

    if(toast != null) 
    { 
    toast.cancel(); 
    toast = null; 
    } 
    toast = new Toast(YourActivity.this); 
    toast.setText(msg); 
    toast.show() 

} 


}