应用程序closures时如何停止显示来自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(); } }); } } 

当我点击button时,Toast消息显示。 没关系。

我的问题是:

当我点击buttonmultiple times ,然后closures应用程序 ,然后吐司继续开始他们的工作显示消息。

我不想这样

我想如果应用程序closures,敬酒也应该停止显示他们的消息。

有人可以告诉我,我必须做什么?

Solutions Collecting From Web of "应用程序closures时如何停止显示来自Toast的消息?"

我想如果应用程序closures,则Toast也应该停止显示消息。

在你的情况下,调用cancel() Toast对象来取消它在onDestroy()方法。

这里是一个类似的例子。

更新!

我testing了OP解决scheme,但没有结果。

.cancel() .hide().cancel()方法可用于Toast但似乎他们不工作。 解决的方法是,您必须创build自己的自定义视图,其行为类似于Toast ,然后可以在Activity完成时取消所有Toasts

存储对吐司对象的引用。 在你的onDestroy中,如果吐司不为空,那就调用cancel()。

当你的应用程序不可见时,你可能想取消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。

在某些情况下尝试在OnCreate()函数中使用finish()。 希望这会帮助你。

尝试这个,

您可以取消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);