我有以下代码:
private Toast movieRecordToast;
private void displayNextMovie() {
if (movieRecordToast != null) movieRecordToast.cancel(); // cancel previous Toast (if user changes movies too often)
movieRecordToast = Toast.makeText(getApplicationContext(), "Next", Toast.LENGTH_SHORT);
movieRecordToast.show();
private void displayPrevMovie() {
if (movieRecordToast != null) movieRecordToast.cancel();
movieRecordToast = Toast.makeText(getApplicationContext(), "Prev", Toast.LENGTH_SHORT);
movieRecordToast.show();
但是,如果快速多次调用了
displayNextMovie
,然后又调用了displayPrevMovie
,则仍显示“下一个” Toast,并且仅在显示“上一个”之后。取消似乎无法正常工作。
最佳答案
无需每次想要显示新文本时都创建一个新的Toast
对象,而是可以轻松地仅保留一个Toast
对象并在需要时取消当前的Toast
。在显示下一个Toast
之前,您可以使用Toast.setText()
函数更改文本。
样例代码:
private Toast mToastText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create the object once.
mToastText = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
private void displayText(final String message) {
mToastText.cancel();
mToastText.setText(message);
mToastText.show();
}