我有以下代码:

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

09-06 08:36