簡體   English   中英

以編程方式啟動和取消Toast

[英]Start and cancel a toast programmatically

在我的應用程序中,我有一個程序可以持續2到15秒或多或少。 我想要的是在程序啟動時設置一種吐司:

Loading values. Wait...

剛才,我已經將toast持續時間設置為SHORT,因為如果程序持續大約5秒或更短的時間,那么LONG就會持續很長時間。 但是將持續時間設置為SHORT,當持續時間超過10秒時,toast消失,並且沒有消息顯示應用程序仍在處理,因此用戶可以開始觸摸事物。

我想要的是設置像吐司一樣的東西,但我可以在程序完成時以編程方式取消。 有任何想法嗎?

我建議您只需將Toast持續時間設置為最大可能時間 ,然后使用Toast.makeText(...)返回的Toast對象在您的過程完成時取消它。

Toast t = Toast.makeText(....., YERY_LONG_TOAST_TIME);
t.show();

public void onYourTaskFinished() {
    t.cancel();
}

這樣的事情。 我個人會建議使用ProgressDialog btw: http//developer.android.com/reference/android/app/ProgressDialog.html

這是一個例子:

final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT
final Toast toast = Toast.makeText(ctx, "hello android", Toast.LENGTH_SHORT);

Handler h= new Handler();
    h.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.show(); 
       }
}, 1000); 



    h.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 3000); 

您可以在創建Toast時使用Toast的處理程序,將其傳遞給作業並在作業啟動時調用show()方法,並在作業完成時調用cancel()方法。

但是 ,根據您的描述,吐司消息可能不是您的最佳選擇。 Toast更像是一個提示,如果用戶錯過了它幾乎沒有影響。 有關您的應用程序的背景信息很少,我認為如果您不希望用戶在加載數據時觸摸任何內容,則可能需要ProgressDialog;如果您只是希望用戶知道您的工作進度,則可能需要ProgressBar

不要為此目的使用Toast。 您應該使用進度對話框,或者可以將進度指示器添加到通知欄。 因此,即使不在您的應用內,用戶也可以看到進度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM