在显示新的 Toast 之前取消之前显示的 Toast

th3*_*r0d 1 java android

我有一个附加到按钮的函数,当按下该按钮时,会从数组列表中删除一个项目,然后显示一个提示“项目已删除!”。如果我多次按下删除按钮,那么所有的吐司都会显示出来,使其看起来像一个非常长的吐司显示。我想每次在显示新的 toast 之前取消 toast。我是这样展示我的吐司的

public void removeItem(View view)
{
    Toast.makeText(getApplicationContext(),"Text",toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)

现在我试图制作一个 toast 对象,取消它,设置文本,然后每次按下按钮时显示它。这样之前的toast就被取消了。不确定这是否是正确的方法。

public void removeItem(View view)
{
    Toast toast = Toast.makeText(this,"",Toast.LENGTH_SHORT);
    toast.cancel();
    toast.setText("Text");
    toast.show();
}
Run Code Online (Sandbox Code Playgroud)

这最终什么也没显示。有什么帮助吗?

Rei*_*n S 5

您给定的示例不起作用,因为您正在调用cancel()新创建的Toast对象实例。您必须以Toast某种方式保留对当前显示的引用,并在再次显示之前取消它。

Toast mMyToast // declared within the activity class
public void removeItem(View view)
{
    if(mMyToast!=null) mMyToast.cancel() // Avoid null pointer exceptions!
    mMyToast = Toast.makeText(this,"Text",Toast.LENGTH_SHORT);
    mMyToast.show();
}
Run Code Online (Sandbox Code Playgroud)