杀Android的吐司?(Kill android toast?)

2019-10-21 15:30发布

我有一个按钮,按钮上时,点击敬酒,如果用户点击按钮数次,转到以前的活动,甚至关闭aplication敬酒仍然可见,

如何完成或者当用户进入任何其他活动或如何防止代土司取消敬酒?

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

Answer 1:

试试这个cancel() Toasthandler

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);


Answer 2:

Toast s为无关它们的上下文 。

您可以使用替代(AppMsg,Crouton或新的小吃吧),或保持对它的引用您的Toastcancel()它在你的Activity.onPause()让我们说。



Answer 3:

您可以取消单独Toasts通过调用cancel()上的Toast对象。 据我所知,有没有办法让你取消所有未完成的Toasts ,虽然。

当调用上的活动结束(),该方法的onDestroy()被执行这种方法可以做这样的事情:

  1. 解雇任何对话框中的酶活性管理。
  2. 关闭所有游标活性管理。
  3. 关闭所有打开的搜索对话框

此外, 的onDestroy()不是一个析构函数。 实际上它并不破坏的对象。 只是,是基于一定的状态称为方法。 所以,你的情况是还活着,很好*超类的后的onDestroy()运行和returns.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单击事件。



文章来源: Kill android toast?