2017-04-06 124 views
0

起初我想要的是取消Toast中当前显示的消息以显示新消息,因此我搜索并发现需要创建Toast对象以使用。取消方法。因此,我在MainActivity的行下创建了一个Toast对象,但是当我运行该应用程序时出现错误。它说“不幸的是,MyApp已经停止”。确认错误是在主活动下面声明吐司对象时,我通过注释声明来获得该声明,并且它没有错误地运行。而在吐司消息中,我想要的是取消当前消息以显示下一条消息,以便在我需要时显示。因为缺省情况是在显示下一个触发消息之前使用所有的Toast持续时间。Android Studio取消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(); 
} 
+0

粘贴此行 Toast toastObject = Toast.makeText(this,“”,Toast.LENGTH_LONG);与onCreate()方法 –

+2

可能重复[如何取消吐司](http://stackoverflow.com/questions/4395062/how-to-cancel-toast) –

+0

尝试shoulf工作:[http://stackoverflow.com/问题/ 4395062 /如何取消,敬酒](http://stackoverflow.com/questions/4395062/how-to-cancel-toast) – JakSok

回答

0

当你写行你实例化一个新的吐司对象

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

+0

所以我把声明放在方法ToastShowMsg中,所以每次我想要显示的消息,我会打电话。在ToastObject声明之后,在那里有.cancel()。但是在运行应用程序时,它不会取消当前消息并等待其持续时间完成,然后显示新消息。 –

+0

你可以用'ToastShowMsg'方法编辑你的第一篇文章吗? –

+0

做完了一看。 –