这是我的示例代码:
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也应该停止显示他们的消息。
谁能告诉我我要做什么呢???
我想如果应用程序关闭,那么Toast也应该停止显示该消息。
在你的情况下打电话 cancel()
至 Toast
对象取消它 onDestroy()
方法。
这里有一个 类似 例。
更新!
我测试了OP解决方案但没有结果。
.hide()
和 .cancel()
方法可用 Toast
但似乎他们没有工作。解决方案是,您必须创建自己的自定义视图,其行为类似于 Toast
然后你可以全部取消 Toasts
当。。。的时候 Activity
饰面。
存储对Toast对象的引用。在你的onDestroy中,如果toast不为null,则在其上调用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一样工作。
尝试这个,
你可以取消 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);
尝试使用 finish()
在你的 OnCreate()
在某些条件下起作用。希望这会帮助你。