Android Studio取消Toast消息以显示新消息

时间:2017-04-06 14:16:56

标签: android

首先我想要的是取消Toast中当前显示的消息以显示新消息,以便我搜索并发现我需要创建Toast对象以使用.Cancel方法。所以我在MainActivity行下方创建了一个toast对象,但是当我运行应用程序时出现错误。它说“不幸的是,MyApp已停止”。确认错误是在主活动下方声明toast对象时,我通过注释声明得到了它并且它运行没有错误。并且在toast消息中我想要的是取消当前消息以便下一条消息显示在我想要它的时候。因为默认情况下它在显示下一个触发消息之前使用所有Toast持续时间。

我的问题是为什么我会收到错误?如何取消当前的Toast消息以显示我的新消息。提前谢谢!

继承Toast对象

的声明代码
public class MainActivity extends AppCompatActivity {

    Toast toastObject = Toast.makeText(this, "", Toast.LENGTH_LONG);

我的toastShowMsg代码:

public void toastShowMsg(String message) {
    Toast toastObject = Toast.makeText(this, "", Toast.LENGTH_LONG);
    toastObject.cancel();
    toastObject = Toast.makeText(this, message, Toast.LENGTH_LONG);
    toastObject.show();
}

1 个答案:

答案 0 :(得分:0)

在编写行

时,您将实例化一个新的Toast对象

Toast toastObject = Toast.makeText(this, "", Toast.LENGTH_LONG);

然后当你打电话

toastObject.cancel();

您正在取消刚刚创建的Toast,这是空的。

Toast toastObject = Toast.makeText(this, "", Toast.LENGTH_LONG); <-- new Toast creation, set to toastObject
toastObject.cancel(); <--- cancelling the toastObject that you have just created

您要做的是保留对您创建的第一个Toast的引用,然后取消它。它看起来像这样:

public YourActivity extends AppCompatActivity
{
    Toast toastObject;

    ...


public void toastShowMsg(String message) {
    if (toastObject != null)
        toastObject.cancel();
    toastObject = Toast.makeText(this, message, Toast.LENGTH_LONG);
    toastObject.show();
}

在您的课程顶部添加对toastObject的引用时,它会在您再次运行toastShowMsg方法时保留对它的引用,然后取消相应的Toast