Как прекратить отображение сообщения из Toast, когда приложение закрыто?
Это мой пример кода:
public class MainActivity extends Activity {
Button buttonClick;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonClick = (Button) findViewById(R.id.buttonClick);
buttonClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Here is the Toast", Toast.LENGTH_SHORT).show();
}
});
}
}
Когда я нажимаю на кнопку, отображается сообщение Toast. Это прекрасно.
Мой вопрос:
Когда я нажимаю кнопку multiple times
на кнопке, а затем закрываю приложение, то Toasts продолжают работу над отображением сообщений.
И я не хочу этого.
Я хочу, чтобы приложение закрылось, а Toasts также перестали отображать свои сообщения.
Может ли кто-нибудь сказать мне, что я должен сделать для этого?
Ответы
Ответ 1
Я хочу, чтобы приложение закрылось, и Toast также должен прекратить отображение сообщения.
В вашем случае вызовите объект cancel()
to Toast
, чтобы отменить его в методе onDestroy()
.
Вот пример аналогичный.
Обновлено!
Я тестировал решение OP, но никакого результата.
.hide()
и .cancel()
доступен для Toast
, но похоже, что они не работают. Решение состоит в том, что вы должны создать свой собственный пользовательский вид, который действует как Toast
, а затем вы можете отменить все Toasts
, когда заканчивается Activity
.
Ответ 2
Сохраните ссылку на ваш объект тоста. В вашем onDestroy, если тост не равен нулю, тогда отмените его().
Ответ 3
Вероятно, вы хотите отменить Toast, когда ваше приложение не видно, поэтому я отменил его на методе onStop().
Вот он:
public class MainActivity extends Activity {
private Toast toast = null;
Button buttonClick;
@SuppressLint("ShowToast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
buttonClick = (Button) findViewById(R.id.buttonClick);
buttonClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
toast.setText("My toast!");
toast.show();
}
});
}
@Override
protected void onStop () {
super.onStop();
toast.cancel();
}
}
Изменить: Обновлено, он должен работать как OP, предназначенный сейчас.
Ответ 4
Попробуйте использовать функцию finish() в вашей функции OnCreate() при некоторых условиях. Надеюсь, это поможет вам.
Ответ 5
Попробуйте это,
Вы можете отменить Toast
, показывая этот код.
final Toast toast = Toast.makeText(getApplicationContext(), "This message will disappear in half second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 500);