[英]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.