2017-04-06 123 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

做完了一看。 –