这是我的示例代码:
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也应该停止显示他们的消息。
有人可以告诉我我要为此做些什么吗?
答案 0 :(得分:9)
我希望如果应用程序关闭,那么Toast也应该停止显示该消息。
在您的情况下,请致电cancel()
至Toast
对象,以便在onDestroy()
方法中将其取消。
以下是similar示例。
<强>已更新!强>
我测试了OP解决方案但没有结果。
.hide()
和.cancel()
方法适用于Toast
,但似乎无效。解决方案是,您必须创建自己的自定义视图,其行为类似于Toast
,然后您可以在Toasts
完成时取消所有Activity
。
答案 1 :(得分:4)
存储对Toast对象的引用。在你的onDestroy中,如果toast不为null,则在其上调用cancel()。
答案 2 :(得分: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一样工作。
答案 3 :(得分:0)
在某些条件下尝试在finish()
函数中使用OnCreate()
。希望这会对你有所帮助。
答案 4 :(得分:0)
试试这个,
您可以取消使用此代码显示的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);