2015-01-20 4 views
0

У меня есть кнопка, и на кнопке появляется щелчок тост, если пользователь нажимает на кнопку несколько раз и перейти к предыдущей деятельности или даже закрыть ПРИМЕНЕНИЕ тост до сих пор виден,Убить андроид тост?

Как закончить или отменить тост, когда пользователь выходит к любой другой деятельности или как предотвратить генерацию тоста?

Toast.makeText(getApplicationContext(), "Enter correct goal!", 
         Toast.LENGTH_SHORT).show() 
+0

Dou вы действительно хотите, чтобы пользователь мог показывать несколько тостов? Возможно, вы можете предотвратить эту причину, сохранив то, что тост уже появился. – JacksOnF1re

+0

@ JacksOnF1re как я могу это сделать? i am mew to this tech –

+0

Ну, простой и простой способ состоял бы в том, чтобы установить логическую переменную (которая, например, находится в вашей деятельности), на true, когда нажимается кнопка и появляется тост. например, если (toastShown == false) {{showToast(); toastShown = true;} Поэтому вы показываете только тост, если переменная ложна и после этого устанавливает значение true. – JacksOnF1re

ответ

2

попробовать этот cancel()Toast с помощью handler

Toast toast = Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_SHORT); 

toast.show(); 

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
@Override 
public void run() { 
toast.cancel(); 
} 
}, 500); 
0

Вы можете отменить отдельные Toasts по телефону cancel() на Toast объекта. AFAIK, вы не можете отменить все выдающиеся Toasts.

При вызове отделка() на деятельность, метод OnDestroy() выполняется этот метод может делать такие вещи, как:

  1. Отклонить любые диалоговые деятельность был управляющим.
  2. Закройте все курсоры, которыми управляла деятельность.
  3. Закройте все открытые поиска диалоговое

Кроме того, OnDestroy() не деструктор. Это фактически не уничтожает объект. Это просто метод, который называется на основе определенного состояния. Таким образом, ваш экземпляр все еще жив и очень хорошо * после запуска и возврата суперкласса onDestroy(). Android поддерживает процессы в случае, если пользователь хочет перезапустить приложение, это ускоряет этап запуска. Процесс не будет делать ничего, и если память должна быть исправлена, процесс будет убит.

Так что объект Toast в классе и вызвать cancel() в onDestroy() методе

Class YourClassActivity extends Activity{ 

     private static Toast toast; 

public void initToast(){ 
    if (toast != null) 
     toast.cancel(); 
    toast = Toast.makeText(MainActivity.this,"text",Toast.LENGTH_SHORT); 
    toast.setText("Enter correct goal!"); 
    toast.setDuration(Toast.LENGTH_SHORT); 
    toast.show(); 
} 

@Override 
public void onDestroy() { 
     super.onDestroy(); 
     if (toast != null) 
     toast.cancel(); 
} 
@Override 
protected void onStop(){ 
    super.onStop(); 
    if (toast != null) 
     toast.cancel(); 
} 
} 

вызова initToast() метода внутри события Button щелчка.

+0

Это разбито мое приложение @Himanshu Agarwal –

+0

проверить новый обновленный код @PUNEET –

0

Toast s is unrelated to their context.

Вы можете использовать альтернативный (AppMsg, гренок или новая закусочная), или сохранить ссылку на ваш Toast и cancel() его в вашем Activity.onPause() скажем.