2012-04-24 1 views
0

У меня есть тост в методе showText(); Этот метод показывает тост, когда мы называем этот метод. Во второй операции у меня есть кнопка, и когда я нажимаю на кнопку, мой Toast должен показывать. Все работает отлично, но когда я нажимаю два или несколько раз, мой тост будет показывать много времени. Я хочу показывать тосты только тогда, когда я нажимаю на кнопку, и когда я снова нажимаю, первый тост исчезает и снова показывает.Android и тосты во время

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(), вам может потребоваться обратиться к другому решению (например: ваш собственный «тост»). EDIT: это не комментарий в ответ на ваш комментарий. – 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() 

} 


}