以编程方式启动和取消Toast

时间:2013-09-17 08:05:08

标签: java android stored-procedures toast duration

在我的应用程序中,我的程序可以持续2到15秒或多或少。我想要的是设置一种在程序开始时显示的祝酒词:

Loading values. Wait...

刚才,我已经将toast持续时间设置为SHORT,因为如果该过程持续大约5秒或更短的时间,那么LONG就会持续很长时间。但是将持续时间设置为SHORT,当持续时间超过10秒时,toast消失,并且没有消息显示应用程序仍在处理,因此用户可以开始触摸事物。

我想要的是设置像吐司一样但我可以在程序完成时以编程方式取消。有什么想法吗?

5 个答案:

答案 0 :(得分:4)

我建议您只需将Toast持续时间设置为the maximum possible time,然后使用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

答案 1 :(得分:1)

以下是一个例子:

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

答案 2 :(得分:0)

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); 

答案 3 :(得分:0)

您可以在创建Toast时使用Toast的处理程序,将其传递给作业并在作业启动时调用show()方法,并在作业完成时调用cancel()方法。

然而,根据您的说明,吐司留言可能不是您的最佳选择。 Toast更像是一个提示,如果用户错过了它几乎没有影响。有关您的应用的背景信息很少,我认为如果您不希望用户在加载数据时触摸任何内容,则可能需要ProgressDialog,如果您只是希望用户知道,则需要ProgressBar你工作的进展。

答案 4 :(得分:-1)

不要为此目的使用Toast。您应该使用进度对话框,或者可以将进度指示器添加到通知栏。因此,即使不在您的应用内,用户也可以看到进度。